Comment puis-je supprimer le numéro de port des URL de Tomcat?

J'ai l'application Groovy sur Grails déployée sur Tomcat / Apache (CentOS). Actuellement, il est accessible via une URL comme http://www.domain.com:8080/AppName . J'aimerais y accéder via http://www.domain.com .

Comment puis-je aborder cela?

Je suppose que vous essayez de déplacer http://www.domain.com:8080/AppName vers http://www.domain.com/ sans l' appellation de départ . Dans ce cas, vous voudrez peut-être envisager d'exécuter un proxy inverse devant Tomcat. La simple commutation du port du port 8080 à 80 nécessiterait toujours que vous puissiez accéder à votre application via http://www.domain.com/AppName .

Apache peut être configuré pour ce faire. Vous devrez configurer mod_proxy avec la configuration suivante:

 ProxyPass / http://localhost:8080/AppName/ ProxyPassReverse / http://localhost:8080/AppName/ 

Vous pouvez également le faire avec d'autres servers Web tels que lighttpd ou nginx et ce qui ne l'est pas, essentiellement la plupart des proxies inverses peuvent le faire sous une forme ou une autre.

Configurez votre server pour écouter le port 80.

http://www.klawitter.de/tomcat80.html

La spécification est que s'il n'y a pas de numéro de port sur un URI, le port par défaut est le port 80.

J'avais une application Tomcat qui fonctionnait en tant que port 80, et j'étais concerné car Tomcat fonctionnerait en tant que root (en raison du port 80). En outre, je ne pouvais vraiment pas être sûr de la security de la request. J'ai donc décidé d'apporter les modifications nécessaires pour l'exécuter comme un autre port non-privé. Mon problème comme le vôtre est de garder l'URI simple. J'ai trouvé sur le Web quelques étapes que je devais faire, et j'étais sur un système Linux.

D'abord, redirigez le port 80 vers le port 8080 (ma solution désignée). Vous pouvez facilement le faire en activant iptables et en utilisant les directives simples suivantes:

 iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A OUTPUT -d your_hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A PREROUTING -d your_hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080 

Je crois que j'ai remplacé mon numéro IP pour localhost et your_hostname lorsque j'ai configuré ceci.

Ensuite, vous devez effectuer quelques modifications dans le file de configuration Tomcat: (1) changer le port du connecteur en 8080 (pour cet exemple) et le port proxy vers 80. Vous pouvez ensuite exécuter Tomcat en tant qu'user non root. URI simple, et tout le monde est heureux. Désolé, je ne me souviens pas du file XML spécifique à changer ici.

J'ai également essayé des solutions pour cela:

  • Le premier, i rund 2 servers tomcats derrière un server web nginx en tant que proxy revers, mais j'ai eu un problème avec la session partagée et je travaille sur cette solution.

  • Le deuxième, que j'ai gardé, est un renvoi de port d'espace kernel.

Le port http par défaut est de 80, et à less que vous ne spécifiez un port autre que 80 dans l'URL, votre browser tentera de se connecter au port 80. C'est la manière dont fonctionne http.

La solution consiste à reconfigurer votre server Web pour qu'il s'exécute sur le port 80 au lieu du port 8080. Vous devez vérifier qu'il n'y a pas déjà un site sur le port 80, bien sûr, et si vos options sont limitées .

Si vos clients accèdent au site de l'extérieur de votre sous-réseau et passent par un périphérique de type routeur / pare-feu, vous pouvez le configurer pour transférer le port externe 80 vers le port interne 8080.

De cette façon, vous pouvez fournir ce qui ressemble à une application normale à des clients externes, et à l'interne, vous pouvez voir la réalité.

Ceci est également utile pour quelque chose comme:

app1.domain.com app2.domain.com

Transférer vers le même server en interne sur différents ports.