Die Curl-Anforderung wird nicht in localhost aufgelöst


7

Ich habe einen Ubuntu-Server, auf dem Apache auf localhost / port 80 ausgeführt wird. Die Domain lautet sub.domain.com

Wenn ich auf diesem Computer eine Curl-Anfrage an http: // localhost stelle, tritt sofort der Fehler auf, dass keine Verbindung zum Host hergestellt werden konnte.

Wenn ich auf diesem Computer eine Curl-Anfrage an sub.domain.com stelle, befindet sich diese in einer Endlosschleife, bis nach einigen Minuten eine Zeitüberschreitung auftritt.

Wenn ich sub.domain.com in meinem Webbrowser auf einem anderen Computer öffne, wird meine HTML-Seite angezeigt.

Wenn ich mit einem anderen Computer eine Curl-Anfrage an sub.domain.com stelle, wird eine Verbindung hergestellt.

Was ist hier los?


Wie sieht Ihre /etc/hostsDatei auf dem Server aus? Können Sie es der Frage hinzufügen? Und überprüfen Sie, dass /etc/nsswitch.confhat hosts: files dnsirgendwo (es sei denn , Sie wissen , dass es anders sein sollte).
Webtoe

Was netstat -anp|grep :80|grep Listensagt das? Hört Ihr Apache nur auf bestimmte IPs, nicht jedoch auf 0.0.0.0 oder 127.0.0.1?
Arjarj

es hört auf 192.168.2.1 und dann eine öffentliche IP. Loopback-Gerät ist 127.0.0.1
Ashley Smith

Antworten:


4

Ihr Kommentar: "Es hört auf 192.168.2.1 und dann ist ein öffentliches IP. Loopback-Gerät 127.0.0.1". Also hört Apache nicht auf 127.0.0.1? Wenn das der Fall ist, ist das Ihr Problem. Konfigurieren Sie Apache so, dass alle Schnittstellen abgehört werden, oder fügen Sie zumindest die Loopback-Schnittstelle zu dem hinzu, was Apache abhört.

Nächste Ausgabe: "Wenn ich auf diesem Computer eine Curl-Anfrage an sub.domain.com stelle, befindet sich diese in einer Endlosschleife, bis nach einigen Minuten eine Zeitüberschreitung auftritt." Was bekommst du wenn du ping sub.domain.com? Dieses Problem scheint ein Problem mit der Namensauflösung auf diesem Computer zu sein, da Sie eine erfolgreiche Verbindung von einem anderen Computer aus herstellen können.


6

Sie müssen wahrscheinlich die Host-Header mit curl angeben, sonst weiß Apache nicht, welche Seite angezeigt werden soll. Je nachdem, wie Sie eingerichtet sind, zeigt localhost wahrscheinlich eine Apache-Standardseite an, während Ihr virtueller Host (sub.domain.com) dies tut Zeigen Sie die Seite an, die Sie erwarten.

Versuchen Sie es mit:

curl -H "Host:sub.domain.com" 127.0.0.1

Das gibt mir einen Curl-Fehler: Ich konnte keine Verbindung zum Host herstellen.
Ashley Smith

1

ping sub.domain.comFühren Sie dies von einem anderen Computer aus und notieren Sie die IP-Adresse in den Antworten (xxx.yyy.zzz.www). Dann von Apache-Maschine verwenden:

curl -H "Host:sub.domain.com" xxx.yyy.zzz.www

Gibt mir 192.168.2.1. Das Loopback-Gerät ist 127.0.0.1. Immer noch abgelaufen.
Ashley Smith

Seltsam. Ich würde als nächstes die Firewall auf dem Apache-Computer überprüfen.
Dusan Bajic
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.