Frage Wie lässt Apache Web Server zwei verschiedene Ports abhören?


Ich möchte einen Apache Web Server, den ich zu Hause installiert habe, an Port 80 und Port 8080 abhören.

Ich habe hinzugefügt Listen 8080 zu httpd.conf und Neustart der Apache-Dienste, aber der Server scheint nicht auf 8080 zu hören. Punch-in http: // localhost: 8080 Zeitüberschreitung und zeigt meine index.html aber nicht an http: // localhost wird meine index.html anzeigen.

Wie kann ich 80 und 8080 hören?


41
2018-06-18 14:32


Ursprung


Warum denkst du, es hört nicht auf Port 8080? Es kann auch nützlich sein, Snippets Ihrer Konfiguration zu veröffentlichen. - David Z
Haben Sie Apache nach dem Bearbeiten der http.conf neu gestartet? - Dana the Sane
@David Ich habe meine Frage aktualisiert, um zu zeigen, warum ich denke, dass sie nicht auf 8080 hört. Habe jetzt keinen Zugang zu httpd.conf. @Dana - ja. - Owen


Antworten:


Eine Standard-Debian-Installation von Apache wird das folgende Konfigurationsfragment haben:

Höre 80

<IfModule mod_ssl.c>
    # Auf SSL-Namen basierende virtuelle Hosts werden noch nicht unterstützt
    # NameVirtualHost-Anweisung hier
    Höre 443
</ IfModule>

Dies sagt Apache an Port 80 zu hören und Port 443 zu hören, wenn mod_ssl konfiguriert ist. In deinem Fall möchtest du:

Listen 80
Listen 8080

Sie müssen sicherstellen, dass Sie einen Neustart ausführen, nicht eine Neuladeoperation für Apache, damit die neuen Listen-Anweisungen beachtet werden. Am sichersten ist es, den Apache anzuhalten, sicherzugehen, dass er tot ist, und ihn erneut zu starten.

Wenn diese Konfiguration nicht funktioniert, überprüfen Sie die Protokolldateien auf Fehlermeldungen. Sie könnten "netstat -lep --tcp" verwenden, um zu sehen, ob irgendetwas auf Port 8080 zu hören ist. Wenn alles andere nicht funktioniert, versuchen Sie Apache unter strace auszuführen, um zu sehen, ob es versucht, an diesen Port zu binden und aber nicht das Problem protokollieren.


57
2018-06-18 15:11



In Apache 2.4 wo kann dieses Konfigurationsfragment gefunden werden? Vielen Dank. - Luís de Sousa
Beantworte meine eigene Frage: /etc/apache2/ports.conf. - Luís de Sousa


Diese Antworten sind großartig, aber sie lassen die Möglichkeit, dass Owen hat eigentlich schon gemacht ("Ich habe hinzugefügt Listen 8080") kann genau bedeuten, wie es sich anhört (d. h. was David vorgeschlagen hat).

Wenn Sie dies bereits getan haben und es immer noch nicht funktioniert, stellen Sie sicher, dass Sie Ihre Anweisungen für jede Subdomain richtig konfiguriert haben, einschließlich der Standarddomain (wenn sie manuell konfiguriert wurde, um anzuhören: 80 direkt nach dem Namen).

Sie haben wahrscheinlich eine Anweisung wie folgt:

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

Sie müssen das ändern zu <VirtualHost *:8080> oder <VirtualHost *:*>.


7
2018-06-18 15:19



Ich vermute, das ist mein Problem. Ich denke, haben Sie eine <VirtualHost *: 80> Direktive. Ich muss das überprüfen. - Owen
Wenn Sie keinen virtuellen Host haben, wird Ihnen Inhalt aus dem globalen DocumentRoot geliefert, der Ihnen wahrscheinlich entweder die Standard-index.html, eine Verzeichnisindexseite, einen 404- oder einen 403-Fehler liefert. Es würde nicht auslaufen. - David Pashley
Klingt wie eine Firewall, die Pakete stillschweigend ablegt. - msanford
Wie sich herausstellte, war es ein Firewall-Problem. - Owen


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), um auf Port 80 zu hören und Port 443 zu hören, wenn mod_ssl konfiguriert ist.

Listen 80
Listen 8080

Schritt 2

#su - service httpd restart

Schritt 3

$ netstat -lntp

(Nicht alle Prozesse konnten identifiziert werden, nicht-eigene Prozessinformationen  wird nicht angezeigt, du müsstest root sein, um alles zu sehen.)

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





Sie können auch überprüfen, ob Sie SELinux aktiviert haben. Die standardmäßige SELinux-Konfiguration lässt möglicherweise nicht zu, dass Apache auf nicht standardmäßigen Ports ausgeführt wird. Hier ist eine Website, auf der Sie sehen können, ob Sie SELinux ausführen und wie Sie es deaktivieren können, wenn Sie seine Funktionen nicht verwenden möchten. http://www.crypt.gen.nz/selinux/disable_selinux.html


0
2018-06-18 15:24



Oder Sie können SELinux eingeschaltet lassen, wenn Sie sich in einem modernen SELinux-System befinden, sehen Sie, wie die Ports mit einem Semanage-Port -l gekennzeichnet sind. sehen danwalsh.livejournal.com/9275.html mit dem Titel "Ich möchte, dass mein Apache-Daemon auf einen anderen Port hört, aber SELinux verhindert das. Was soll ich tun?" - rev


Möglicherweise müssen Sie für einen Standort einen Port 8080 konfigurieren, damit dies funktioniert. Lesen Sie die Dokumentation für Apache-virtuelle Hosts. Jeder "Standort" kann eingerichtet werden, um Verbindungen an bestimmten Ports (und IPs usw.) zu akzeptieren. Verfügen Sie in Ihrer http.conf über einen virtuellen Host, der nur für Port 80 konfiguriert ist?

Außerdem können Sie bestätigen, dass der Server mit 8080 abhört netstat -nlpund auf der Suche nach einem Eintrag an diesem Port.


0
2018-06-18 14:38



Nein, das ist nicht richtig. Wenn Sie wollen, dass Apache einen Port abhört, müssen Sie die Listen-Anweisung verwenden. - David Pashley
Prüfen httpd.apache.org/docs/2.2/en/vhosts/examples.html#port - radius
Nun, es könnte etwas richtig sein - viele Leute erstellen Vhosts wie <VirtualHost *: 80>, und in diesem Fall müssten Sie es in <VirtualHost *: *> ändern oder einen anderen vhost für Port 8080 erstellen. (Natürlich Listen-Anweisung ist ebenfalls erforderlich) - David Z
@David Pashley, Der Autor gab an, dass die Listen-Anweisung bereits hinzugefügt wurde. - Dana the Sane


Angenommen, Linux läuft netstat -lntp als root, wie Sie sehen können, ob Apache auf 8080 hört oder nicht. Dies wird Ihnen helfen zu erkennen, ob das Problem Apache ist nicht zuhören oder wenn externe Faktoren (z. B. Firewall, Selinux usw.) zu Apache sind, die Verbindung Zeitüberschreitung.


0
2018-06-18 16:24