Vraag Hoe laat ik Apache Web Server luisteren op twee verschillende poorten?


Ik wil graag een Apache Web Server die ik thuis heb geïnstalleerd om te luisteren op poort 80 en poort 8080.

Ik heb toegevoegd Listen 8080 naar httpd.conf en herstartte de Apache-services, maar de server lijkt niet te luisteren op 8080. Punching in http: // localhost: 8080 time-out en geeft mijn index.html niet weer, maar http: // localhost zal mijn index.html weergeven.

Hoe laat ik het luisteren naar 80 en 8080?


41
2018-06-18 14:32


oorsprong


Waarom denk je dat het niet op poort 8080 luistert? Het kan ook handig zijn om fragmenten van uw configuratie te plaatsen. - David Z
Heeft u Apache opnieuw gestart na het bewerken van http.conf? - Dana the Sane
@David Ik heb mijn vraag bijgewerkt om te laten zien waarom ik denk dat hij niet luistert op 8080. Heb op dit moment geen toegang tot httpd.conf. @Dana - ja. - Owen


antwoorden:


Een standaard Debian-apache-installatie heeft het volgende configuratiefragment:

Luister 80

<IfModule mod_ssl.c>
    # SSL-naam gebaseerde virtuele hosts worden nog niet ondersteund, dus nee
    # NameVirtualHost-statement hier
    Luister 443
</ IfModule>

Dit leert apache luisteren op poort 80 en luister naar poort 443 als mod_ssl is geconfigureerd. In jouw geval zou je het volgende willen:

Listen 80
Listen 8080

U moet ervoor zorgen dat u een herstart uitvoert, niet een herlaadbewerking op apache om er aandacht aan te schenken voor nieuwe luisterrichtlijnen. Het veiligste om te doen is om apache te stoppen, zorg ervoor dat het dood is en start het opnieuw.

Als deze configuratie niet werkt, controleer dan de logbestanden op eventuele foutmeldingen. Je zou "netstat -lep --tcp" kunnen gebruiken om te zien of er iets luistert op poort 8080. Tenslotte, als al het andere niet werkt, probeer dan apache onder strace uit te voeren om te zien of het probeert te binden aan die poort en faalt, maar log niet in bij het probleem.


57
2018-06-18 15:11



In Apache 2.4 waar kan dit configuratie-fragment worden gevonden? Bedankt. - Luís de Sousa
Mijn eigen vraag beantwoorden: /etc/apache2/ports.conf. - Luís de Sousa


Deze antwoorden zijn geweldig, maar ze laten de mogelijkheid dat Owen heeft eigenlijk al gedaan ("Ik heb toegevoegd Listen 8080") kan precies betekenen hoe het klinkt (d.w.z., wat David heeft voorgesteld).

Als je dit al hebt gedaan en nog steeds niet werkt, zorg er dan voor dat je je richtlijnen correct hebt geconfigureerd voor elk subdomein dat je hebt, inclusief de standaard subdomein (als het handmatig is geconfigureerd om te luisteren naar: 80 direct achter de naam).

U hebt waarschijnlijk een dergelijke richtlijn:

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

U moet dat veranderen in <VirtualHost *:8080> of <VirtualHost *:*>.


7
2018-06-18 15:19



Ik vermoed dat dit mijn probleem is. Ik denk dat ik een <VirtualHost *: 80> -richtlijn heb. Ik zal dit moeten controleren. - Owen
Als u geen virtuele host hebt, ontvangt u inhoud van de globale DocumentRoot, die u waarschijnlijk een standaardindex.html, een indexindexpagina, een 404- of een 403-fout geeft. Het zou niet time-out. - David Pashley
Het klinkt alsof je een firewall op zijn plaats hebt die pakketten stil laat vallen. - msanford
Het bleek een probleem met de firewall te zijn. - Owen


Stap 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) om te luisteren op poort 80 en naar poort 443 te luisteren als mod_ssl is geconfigureerd.

Listen 80
Listen 8080

Stap 2

#su - service httpd restart

Stap 3

$ netstat -lntp

(Niet alle processen konden worden geïdentificeerd, procesinformatie zonder eigendom  zal niet getoond worden, je zou root moeten zijn om alles te zien.)

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       

5
2018-06-18 16:38





U kunt ook controleren of SELinux is ingeschakeld. De standaard SELinux-configuratie staat je misschien niet toe om Apache op niet-standaard poorten uit te voeren. Hier is een site die laat zien of je SELinux gebruikt en hoe je het uitschakelt, als je de functies niet wilt gebruiken of gebruiken. http://www.crypt.gen.nz/selinux/disable_selinux.html


0
2018-06-18 15:24



Of je kunt SELinux aan laten staan, als je op een modern SELinux-systeem zit, kijk dan hoe de poorten worden gelabeld met een semanage-poort -l. zien danwalsh.livejournal.com/9275.html met de titel "Ik wil dat mijn apache-daemon op een andere poort luistert, maar SELinux voorkomt dit, wat moet ik doen?" - rev


Mogelijk moet u een site een poort 8080 configureren voordat deze werkt. Lees de documentatie voor door Apache virtuele hosts. Elke 'site' kan worden ingesteld om verbindingen op specifieke poorten (en ip's, enz.) Te accepteren. Heeft u een virtuele host in uw http.conf die alleen is geconfigureerd voor poort 80?

U kunt ook bevestigen dat de server luistert naar 8080 via netstat -nlpen op zoek naar een vermelding op die poort.


0
2018-06-18 14:38



Nee, dit klopt niet. Als je wilt dat apache op een poort luistert, moet je de luisterrichtlijn gebruiken. - David Pashley
Controleren httpd.apache.org/docs/2.2/en/vhosts/examples.html#port - radius
Nou ja, het kan enigszins kloppen - veel mensen maken vhosts zoals <VirtualHost *: 80>, en in dat geval zou je het moeten veranderen in <VirtualHost *: *> of een ander vhost maken voor poort 8080. (Natuurlijk, de Luisterinstructie is ook vereist) - David Z
@David Pashley, de auteur verklaarde dat de Listen-richtlijn al was toegevoegd. - Dana the Sane


Ervan uitgaande dat Linux wordt uitgevoerd netstat -lntp als root, zoals je kunt zien als apache naar 8080 luistert of niet. Dit zal je helpen te identificeren of het probleem apache is dat niet luistert of dat er factoren extern (bijvoorbeeld firewall, selinux, enz.) Zijn om te apachen waardoor de verbinding time-out krijgt.


0
2018-06-18 16:24