52 votes

Comment faire en sorte que le serveur Web Apache écoute sur deux ports différents ?

J'aimerais qu'un serveur Web Apache installé chez moi écoute sur les ports 80 et 8080.

J'ai ajouté Listen 8080 à httpd.conf et redémarré les services Apache mais le serveur ne semble pas écouter sur 8080. En tapant http://localhost:8080 s'interrompt et n'affiche pas mon index.html mais http://localhost affichera mon index.html.

Comment faire pour qu'il écoute les numéros 80 et 8080 ?

73voto

David Pashley Points 22851

Une installation Debian standard d'Apache aura le fragment de configuration suivant :

Listen 80

<IfModule mod\_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

Cela indique à Apache d'écouter sur le port 80 et d'écouter sur le port 443 si mod_ssl est configuré. Dans votre cas, vous voudriez :

Listen 80
Listen 8080

Vous devez vous assurer que vous exécutez une opération de redémarrage, et non de rechargement, sur Apache pour qu'il prête attention aux nouvelles directives Listen. La chose la plus sûre à faire est d'arrêter apache, de s'assurer qu'il est mort et de le redémarrer.

Si cette configuration ne fonctionne pas, vérifiez les fichiers journaux pour voir s'il y a des messages d'erreur. Vous pouvez utiliser "netstat -lep --tcp" pour voir s'il y a quelque chose qui écoute sur le port 8080. Enfin, si tout le reste ne fonctionne pas, essayez d'exécuter apache sous strace pour voir s'il essaie de se lier à ce port et échoue, mais ne consigne pas le problème.

11voto

msanford Points 1427

Ces réponses sont excellentes, mais elles ne tiennent pas compte de la possibilité qu'Owen a l'a déjà fait ("J'ai ajouté Listen 8080 ") peut signifier exactement ce qu'il semble signifier (c'est-à-dire ce que David a suggéré).

Si vous l'avez déjà fait et que cela ne fonctionne toujours pas, assurez-vous que vous avez correctement configuré vos directives pour chaque sous-domaine que vous avez, y compris le sous-domaine par défaut (s'il a été configuré manuellement pour écouter :80 juste après le nom).

Vous avez probablement une directive de ce type :

<VirtualHost *:80>
 ServerName michaelsanford.com
 etc…
</VirtualHost>

Vous devez le remplacer par <VirtualHost *:8080> ou <VirtualHost *:*> .

6voto

Rajat Points 3311

Schritt 1

#vi httpd.conf
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

httpd(apache) à écouter sur le port 80 et à écouter sur le port 443 si mod_ssl est configuré.

Listen 80
Listen 8080

Schritt 2

#su - service httpd restart

Schritt 3

$ netstat -lntp

(Tous les processus n'ont pas pu être identifiés, les informations sur les processus non propriétaires ne seront pas affichées, il faudrait être root pour tout voir).

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:47027               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:80              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:8080            0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 ::ffff:127.0.0.1:45100      :::*                        LISTEN      3149/java           
tcp        0      0 :::111                      :::*                        LISTEN      -                   
tcp        0      0 :::80                       :::*                        LISTEN      -                   
tcp        0      0 :::57173                    :::*                        LISTEN      3149/java           
tcp        0      0 :::18197                    :::*                        LISTEN      3149/java           
tcp        0      0 :::22                       :::*                        LISTEN      -                   
tcp        0      0 ::1:631                     :::*                        LISTEN      -                   
tcp        0      0 :::40832                    :::*                        LISTEN      3149/java           
tcp        0      0 ::ffff:127.0.0.1:6880       :::*                        LISTEN      3149/java

0voto

Dana the Sane Points 818

Il se peut que vous deviez configurer un site sur le port 8080 pour que cela fonctionne. Lisez la documentation de Hôtes virtuels Apache . Chaque "site" peut être configuré pour accepter des connexions sur des ports spécifiques (et des adresses IP, etc.). Avez-vous un hôte virtuel dans votre http.conf qui n'est configuré que pour le port 80 ?

Vous pouvez également confirmer que le serveur écoute sur 8080 à l'aide de la commande netstat -nlp et rechercher une entrée sur ce port.

0voto

Vous pouvez également vérifier si SELinux est activé. La configuration SELinux par défaut peut ne pas vous permettre d'exécuter Apache sur des ports non standard. Voici un site qui vous indique si vous utilisez SELinux et comment le désactiver si vous ne voulez pas ou n'utilisez pas ses fonctionnalités. http://www.crypt.gen.nz/selinux/disable_selinux.html

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