Eu tenho um arquivo /etc/hosts
com as duas linhas a seguir:
127.0.0.2 myapp.dev
127.0.0.3 api.myapp.dev
e isso funciona bem. Quando eu pingar myapp.dev
ele mapeia para 127.0.0.2
e quando eu pingar api.myapp.dev
ele mapeia para 127.0.0.3
, como deveria ser.
Agora preciso mapear 127.0.0.2
para 127.0.0.1:3000
e 127.0.0.3
para 127.0.0.1:3001
.
Isso é necessário porque eu estou tentando executar um aplicativo Rack cujo arquivo de configuração 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
O que esse arquivo de configuração faz é executar o aplicativo Rack na porta 3001. Quando a variável de ambiente EMERALD_END é definida como production
, ele usa Rack::Static
para exibir os arquivos estáticos. Por outro lado, quando EMERALD_ENV é definido como development
ou test
, ele inicia um aplicativo ReactJS como o aplicativo front-end na porta 3000.
A idéia geral agora é acessar o aplicativo front-end em http://myapp.dev
e acessar a API (back-end) em http://api.myapp.dev
.
Eu tentei alguns hacks e até considerei a possibilidade de usar o iptables ou outro software de filtragem de pacotes para fazer isso. Eu sei que posso usar regras iptables para redirecionar a entrada de um determinado IP / porta para outro IP, mas prefiro encontrar uma solução mais fácil.
Alguma sugestão?
Tags dns iptables hosts redirection