Asignación de un dominio local a http: // localhost: <número de puerto>

1

tengo un /etc/hosts Archivo con las dos líneas siguientes:

127.0.0.2   myapp.dev
127.0.0.3   api.myapp.dev

y esto funciona bien. Cuando hago ping myapp.dev se asigna a 127.0.0.2 y cuando hago ping api.myapp.dev se asigna a 127.0.0.3, como debería ser.

Ahora necesito mapear 127.0.0.2 a 127.0.0.1:3000 y 127.0.0.3 a 127.0.0.1:3001.

Esto es necesario porque estoy intentando ejecutar una aplicación de Rack cuyo archivo de configuración config.ru es

#\ -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

Lo que hace este archivo de configuración es ejecutar la aplicación Rack en el puerto 3001. Cuando la variable de entorno EMERALD_END se establece en production usa Rack::Static Para servir los archivos estáticos. Por otro lado, cuando EMERALD_ENV se establece en development o test inicia una aplicación ReactJS como la aplicación de front-end en el puerto 3000.

La idea general ahora es acceder a la aplicación de front-end en http://myapp.dev y acceder a la API (back-end) en http://api.myapp.dev.

Probé algunos hacks e incluso consideré la posibilidad de usar iptables u otro software de filtrado de paquetes para hacer esto. Sé que puedo usar iptables reglas para redirigir la entrada de una determinada IP / Puerto a otra IP, pero prefiero encontrar una solución más fácil.

¿Alguna sugerencia?

Ed de Almeida
fuente
¿Es el alojamiento virtual una opción?
Jeremiah Megel
Usando un servidor como Apache o Nginx, @JeremiahMegel?
Ed de Almeida
Estaba pensando con la aplicación Rack en sí, pero también podría funcionar el uso de Apache / Nginx / Caddy como proxy inverso con hosts virtuales.
Jeremiah Megel
No sé cómo hacer esto con la aplicación React en sí. Esta sería la mejor opción, ya que este software que estoy creando tendría un proceso de instalación muy complicado si tuviera que agregar la instalación / configuración de un servidor web o un proxy inverso.
Ed de Almeida