7 votes

Comment rediriger un numéro de port sous Linux ?

J'ai une application Tomcat qui tourne sur ma machine Linux sur le port 8080 ( www.myapplication.com:8080/myapps ).

Je veux rediriger le port de Tomcat :8080 au port HTTP par défaut de :80 afin de pouvoir accéder à l'application sans numéro de port ( www.myapplication.com/myapps ).

Comment puis-je faire ça sous Linux ?

1 votes

Pourquoi ne pas simplement mettre à jour la configuration de tomcat pour écouter sur 80 au lieu de 8080 ?

7voto

liangzan Points 1733

Vous pourriez utiliser iptables pour rediriger le port 80 vers 8080.

Ceci est utile si votre application est lancée par un utilisateur non privilégié au lieu de root.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

HTH, PEra

1 votes

En rapport : askubuntu.com/q/444729/929 (c'est-à-dire que vous pourriez avoir à utiliser OUTPUT au lieu de PREROUTING )

2voto

Suresh Points 277

Il y a de nombreuses façons d'y parvenir, mais la première qui me vient à l'esprit est d'utiliser nginx : Comment rediriger de façon permanente une URL du port 8080 vers le port 80 en utilisant nginx

Une autre solution consiste à utiliser iptables : http://www.cyberciti.biz/faq/linux-port-redirection-with-iptables/

0 votes

Merci php-coder... Cela a résolu mon problème... J'ai exécuté la commande et cela a fonctionné pour moi... :)

2voto

beam022 Points 141

Vous ne devez jamais montrer Tomcat ou tout autre serveur d'application Java au monde extérieur. La meilleure pratique consiste à installer Apache HTTPD et à l'utiliser comme reverse proxy pour envelopper Tomcat ou JBoss.

Je vous recommande de faire ce qui suit.

  1. Installer httpd :

    yum install httpd
  2. Créer un fichier

    /etc/httpd/conf.d/myredirect.confavec le contenu suivant :
    
    ProxyPass   http://127.0.0.1:8080/myapps/
    ProxyPassReverse       http://127.0.0.1:8080/myapps/
  3. Si l'application réside dans la racine, la configuration sera la suivante :

    ProxyPass   http://127.0.0.1:8080/
    ProxyPassReverse       http://127.0.0.1:8080/
  4. Redémarrer httpd :

    service httpd restart

Les instructions ci-dessus sont fournies pour les linux de la famille RedHat. Elles peuvent être différentes pour d'autres.

1 votes

Pourquoi ne pas laisser Java affronter le monde ?

1voto

mkrufky Points 103

Pour une solution très rapide, temporaire, de type couteau d'armée, qui ne nécessite probablement pas l'installation de quoi que ce soit :

Dans un autre terminal, alors que vous êtes déjà connecté à la machine, ouvrez une session de transfert de port ssh vers localhost, comme suit :

$  ssh -L:1111:localhost:2222 localhost

Vous devriez vous attendre à voir ce qui suit (ou au moins la première ligne). Vous devrez peut-être fournir votre mot de passe.

Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.

Ce qui précède va transférer le trafic du port 1111 vers le port 2222.

Donc, dans le cas de l'OP :

$  ssh -L:8080:localhost:80 localhost

1voto

superunamused Points 21

Vous devez d'abord modifier le fichier server.xml, changer "Connector port="8080"" en "80". Le fichier peut être dans /etc/tomcat6, ou vous pouvez utiliser "locate server.xml" pour le trouver.

Ensuite, vous devez changer le fichier de configuration par défaut de tomcat6, dans mon système (debian squeeze) est /etc/default/tomcat6, ajouter la ligne : AUTHBIND=yes.

redémarrez votre tomcat.

alors vous pouvez utiliser www.myapplication.com/myapps pour accéder à votre application.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X