Ich habe am Ende des Handbuchs Erste Schritte fürvagrant
ein kleines Problem . Ich arbeite an einer CentOS-Basebox, auf der Apache2 ausgeführt wird (Bereitstellung über Puppet). Ich habe die Portweiterleitung für Webanfragen mithilfe der folgenden Zeile eingerichtet Vagrantfile
:
config.vm.forward_port "web", 80, 4567
Aber wenn ich Anfragen an diesen Port stelle, schlagen sie fehl. Der von Safari gemeldete Fehler lautet "Safari kann die Seite" http: // localhost: 4567 / " nicht öffnen, da der Server die Verbindung unerwartet getrennt hat."
Ich habe a ausgeführt vagrant reload
und "[default] - web: 80 => 4567 (Adapter 1)" in der Schriftrolle gesehen. Wo soll ich also mit der Fehlerbehebung beginnen? Vielen Dank.
curl -v 'http://localhost:4567/'
sagt das aus? Manchmal ist Safari etwas zu nett, um Fehlermeldungen zu verbergen.curl 'http://localhost:80'
die VM selbst? Wenn nicht, liegt das Problem nicht in der Portweiterleitung.curl
aus der VM heraus funktioniert.curl
vom Gastgeber gibt mir(52) Empty reply from server
.Antworten:
Ich werde dies zu einer tatsächlichen Antwort machen, anstatt nur mehr Kommentare.
Das erste: Versuchen Sie es
curl 'http://localhost:80'
innerhalb der VM. Wenn das nicht funktioniert, ist es definitiv nicht die Portweiterleitung.Weiter: Versuchen Sie es
curl -v 'http://localhost:4567/'
von Ihrem Host-Computer aus. Curl gibt Ihnen möglicherweise eine bessere Fehlermeldung als Safari.Ich würde überprüfen, ob keine Firewalls eingerichtet sind, die den Zugriff auf Port 80 einschränken. Auf der Standard-Vagrant-VM (Ubuntu) ist keine Firewall eingerichtet, aber Sie sagten, Sie verwenden etwas anderes, sodass es sich möglicherweise lohnt überprüfen.
Wenn dies nicht der Fall ist, versuchen Sie, etwas anderes als Apache auf Port 80 zu erstellen. Python wird mit einem einfachen HTTP-Server geliefert, den Sie verwenden können. Wechseln Sie in den Ordner mit
index.html
und führen Sie ihn aussudo python -m SimpleHTTPServer 80
. Versuchen Sie dann, ihn mit Curl aus beiden Feldern zu treffen. Wenn das funktioniert, liegt wahrscheinlich ein Apache-Konfigurationsproblem vor. Ich habe nicht genug Erfahrung mit Apache, um zu helfen, wenn dies der Fall ist (ich verwende Nginx).quelle
iptables
. Ich habe überprüft, ob die StandardrichtlinieACCEPT
für eingehende Verbindungen gilt, habe jedoch nicht auf die benutzerdefinierte Regelkette von RedHat geachtet, dieREJECT
als letzte Regel in der Kette eine Sammelregel enthält. Ich hatte eine Firewall im Weg und bemerkte es einfach nicht.service iptables stop
Als Root ausführen, um ein Problem mit der Gast-Firewall schnell auszuschließen. Aktivieren Sie es später bei Bedarf erneut.iptables
beschränkte fast alles. Ich folgte diesem iptable Centos-Leitfaden (Lösung in Abschnitt 3 Schreiben eines einfachenVagrantfile
und führte den Befehl ausvagrant reload
Ich wollte einen zusätzlichen Hinweis hinzufügen, dass dies häufig durch den Server in der VM verursacht wird, da er an einen
127.0.0.1
Loopback bindet . Sie sollten sicherstellen, dass der Server gebunden ist,0.0.0.0
damit alle Schnittstellen darauf zugreifen können.Einige integrierte App-Server, wie z. B. die Entwicklungsserver von Django, und einige Ruby-Server sind standardmäßig
127.0.0.1
aktiviert. Achten Sie daher darauf.Abgesehen davon gilt das, was Steve gesagt hat: Stellen Sie sicher, dass es innerhalb der VM funktioniert, und probieren Sie einige andere einfache Server aus, um herauszufinden, ob es sich um ein Konfigurationsproblem handelt.
quelle
Ich hatte das gleiche Problem unter CentOS 6.3 mit NGINX und fand die Antwort in den Iptables auf der Vagrant-Box.
Führen Sie die folgenden Schritte aus, wenn Sie auf die Vagabundkiste schlagen:
Listen Sie zuerst die aktuellen iptable-Regeln auf
Dann spülen Sie die aktuellen Regeln:
SSH-Verbindungen am TCP-Port 22 zulassen
Legen Sie Standardrichtlinien für INPUT-, FORWARD- und OUTPUT-Ketten fest
Legen Sie den Zugriff für localhost fest
Akzeptieren Sie Pakete, die zu etablierten und verwandten Verbindungen gehören
Einstellungen speichern
Liste geänderter Regeln
Curl localhost: [port #] oder drücke es in deinem Browser von außerhalb des Vagabunden
Weitere Informationen zu CentOS iptable-Konfigurationen finden Sie hier:
http://wiki.centos.org/HowTos/Network/IPTables
Viel Glück.
quelle
service iptables stop
iptables -F
allein hat es für michEine bessere Lösung für mich ist das Deaktivieren der Firewall
quelle
Ich möchte noch eine Notiz wie Mitchell hinzufügen. Wenn mein Fall ist, leite ich ihn von 80 an 6789 weiter
Und ich habe
Dann habe ich stattdessen die IP-Adresse verwendet, sie hat die richtige HTML-Nachricht erhalten.
quelle