Ho un /etc/hosts
file con le due seguenti righe:
127.0.0.2 myapp.dev
127.0.0.3 api.myapp.dev
e questo funziona benissimo. Quando ho rumore metallico myapp.dev
traccia in 127.0.0.2
e quando ho ping api.myapp.dev
traccia in 127.0.0.3
, come dovrebbe essere.
Ora ho bisogno di mappare 127.0.0.2
da 127.0.0.1:3000
e 127.0.0.3
verso 127.0.0.1:3001
.
Ciò è necessario perché sto cercando di eseguire un'applicazione Rack il cui file di configurazione 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
Ciò che fa questo file di configurazione è l'esecuzione dell'applicazione Rack sulla porta 3001. Quando la variabile di ambiente EMERALD_END è impostata su production
, utilizza Rack::Static
per servire i file statici. D'altra parte, quando EMERALD_ENV è impostato su development
o test
avvia un'applicazione ReactJS come applicazione front-end sulla porta 3000.
L'idea generale ora è accedere all'applicazione front-end su http://myapp.dev
e accedere all'API (back-end) su http://api.myapp.dev
.
Ho provato alcuni hack e ho anche considerato la possibilità di utilizzare iptables o altri software di filtraggio dei pacchetti per farlo. So che potrei usare le regole di iptables per reindirizzare l'input da un determinato IP / Porta a un altro IP, ma preferirei trovare una soluzione più semplice.
Eventuali suggerimenti?