¿Puedo asignar un nombre de host * y * un puerto con / etc / hosts? [cerrado]

189

¿Puedo asignar una dirección IP como 127.0.0.1un nombre de dominio y un puerto?

Por ejemplo, me gustaría asignar 127.0.0.1aapi.example.com:8000

Carson
fuente
66
No puede asignar el número de puerto en / etc / hosts. En su lugar, puede definir como 127.0.0.1 api.mydomain.comy acceder a él en el navegador comoapi.mydomain.com:8080
Fizer Khan
Leí en alguna parte que dns apoya esto. Puede tener un registro que diga en www.example.com http está en el puerto 80 y también un registro A para decir que la dirección es 127.0.0.1 también dijo que no estaba bien soportado. No dijo mucho después de eso.
ctrl-alt-delor

Respuestas:

185

No, eso no es posible. El puerto no es parte del nombre de host, por lo que no tiene ningún significado en el hostsarchivo.

mata
fuente
134

Si realmente necesita hacer esto, use el proxy inverso.

Por ejemplo, con nginx como proxy inverso

server {
  listen       api.mydomain.com:80;
  server_name  api.mydomain.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}
Eric Fortis
fuente
44
Creo que la línea de proxy_pass debería verse así: proxy_pass http://127.0.0.1:8000;obtuve un "prefijo de URL no válido" en nginx 1.4.3.
Nobu
gracias por este maravilloso consejo! Solución simple para la mayoría de los servidores.
micahscopes
Estoy usando este truco para asignar puertos de una máquina remota (por ejemplo, cloud.app:80 mientras el puerto real es 8080). Muy útil para probar los nodos Confluence de un clúster pero acceder a ellos en la misma URL base. ¡Gracias!
Gábor Nagy
9
Básicamente tuve el mismo problema y la solución usando este proxy inverso es realmente útil. Aunque quería una solución más simple, creé esta herramienta: github.com/cristianoliveira/ergo Espero que sea de alguna ayuda :)
Cristian Oliveira
Gracias @CristianOliveira! Esto me ayudó MUCHO :)
Brunetton