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