¿Cómo hacer que una URL apunte a una instancia de Tomcat?

8

Lo siento si esta pregunta no tiene sentido (no hay expertos aquí), pero entiendo que Tomcat escucha el puerto 8080 y que la URL generalmente se dirige a 80. ¿Hay alguna manera de decirle al DNS que las URL deben apuntar a 8080? ¿O cómo debería resolver este problema?

Jérôme Verstrynge
fuente
posible duplicado de
direccionar
Creo que este artículo explica cómo se puede utilizar SRV para especificar un puerto . Sin embargo, parece que un puerto URI se toma como prioridad sobre el puerto asignado de DNS. Según tengo entendido, los navegadores web agregan automáticamente el puerto 80 a la dirección, lo que podría explicar por qué no he logrado que este enfoque funcione.
Andy2K11

Respuestas:

8

DNS no sabe nada sobre puertos. Si desea que Tomcat escuche en el puerto 8080, entonces tiene un par de opciones. El primero es usar el número de puerto en la URL

http://example.com:8080/

Si no le gusta ver eso, puede usar su servidor web como un proxy de puerto, por ejemplo, en Apache puede usar mod _ proxy

<VirtualHost *:80>
        ServerName      example.com
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                allow from all
        </Proxy>
        ProxyPreserveHost On
        ProxyPass / http://example.com:8080/
        ProxyPassReverse / http://example.com:8080/
        ProxyErrorOverride Off
</VirtualHost>
usuario9517
fuente
¿Qué pasa si tienes otro host escuchando en el puerto 80? Tengo 2 servidores en una máquina (requerido en este caso) pero quiero ocultar el número de puerto en la URL, incluso si es el que está escuchando el tráfico a ese servidor web.
Jay Blanchard
@JayBlanchard Realmente no entiendo su comentario y no me atraería más que decir que lea la documentación sobre hosts virtuales basados ​​en nombres y mod_proxy.
user9517
2

Esto se hace por http://the.site.invaild:8080/.

No es posible dar un puerto en el DNS. El DNS solo asigna nombres a IP. Pero no hay puertos.

mailq
fuente
2

Creo que es mejor hacer que tu tomcat escuche el puerto 80. Puedes hacerlo si no hay otro servidor escucha el puerto 80. Para eso puedes editar server.xml

Cambiar de la siguiente manera,

<Connector port="80" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" />

Ahora puede probar http://example.com/. Esto se resolverá correctamente en su instancia de tomcat. Debido a que el puerto predeterminado de http es 80.

Sunnychayen
fuente
Intenté tu ejemplo, pero no funciona para mí
Luffy
2

Puede haber una posibilidad para resolver esto a través de DNS: SRV-Records

Con SRV-Records básicamente le dices a DNS que responda una pregunta como "¿dónde está el httpd de example.org"? Y DNS responde con una dirección IP y un número de puerto.

Aunque no sé si los clientes solicitan esta información o si el navegador solo realiza una búsqueda de registro A y solicita el sitio web desde la IP dada usando el puerto 80, vale la pena intentarlo si desea hacerlo con DNS.

De lo contrario: deje que Ether Tomcat escuche el puerto 80 o redirija 8080 a Tomcat a través del mod_proxy de Apache.

Subito
fuente
Los navegadores comunes aún no son compatibles con las búsquedas de registros SRV: consulte homepage.ntlworld.com/jonathan.deboynepollard/FGA/… y la discusión aquí .
the-wabbit