1

У меня есть файл /etc/hosts с двумя следующими строками:

127.0.0.2   myapp.dev
127.0.0.3   api.myapp.dev

и это работает нормально. Когда я myapp.dev он сопоставляется с 127.0.0.2 а когда я api.myapp.dev он сопоставляется с 127.0.0.3 , как и должно быть.

Теперь мне нужно сопоставить 127.0.0.2 с 127.0.0.1:3000 и 127.0.0.3 с 127.0.0.1:3001 .

Это необходимо, потому что я пытаюсь запустить приложение Rack, чей конфигурационный файл config.ru

#\ -w -p 3001

require 'emeraldfw'

ENVIRONMENT = ENV['EMERALD_ENV'].nil? ? :development : ENV['EMERALD_ENV']

use Rack::Reloader, 0
use Rack::ContentLength

if (ENVIRONMENT == :production) then
  use Rack::Static, :urls => {"/" => 'index.html'}, :root => 'fe/build'
else
  Dir.chdir('fe')
  spawn 'npm start'
  Dir.chdir('..')
end
run EmeraldFW::Loader.new

Этот конфигурационный файл выполняет приложение Rack на порту 3001. Когда переменная EMERALD_END среды установлена в production она использует Rack::Static для обслуживания статических файлов. С другой стороны, когда EMERALD_ENV настроен на development или test он запускает приложение ReactJS в качестве интерфейсного приложения на порту 3000.

Основная идея теперь - доступ к внешнему приложению по адресу http://myapp.dev и доступ к API (бэкэнду) по адресу http://api.myapp.dev .

Я попробовал некоторые хаки и даже рассмотрел возможность использования iptables или другого программного обеспечения для фильтрации пакетов. Я знаю, что могу использовать правила iptables для перенаправления ввода с определенного IP/ порта на другой IP, но я бы лучше нашел более простое решение.

Какие-либо предложения?

0