У меня есть /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, но я бы лучше нашел более простое решение.
Какие-либо предложения?
Это виртуальный хостинг вариант?