Frage

Ich stoße am Ende des Jahres auf ein kleines Problem Erste Schritte für vagrant.Ich arbeite an einer CentOS-Basisbox, auf der Apache2 ausgeführt wird (Bereitstellung über Puppet).Ich habe die Portweiterleitung für Webanfragen über die folgende 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 nicht öffnen“http://localhost:4567/" weil der Server die Verbindung unerwartet abgebrochen hat.'

Ich habe ein vagrant reload und sah "[Standard] - web:80 => 4567 (Adapter 1)" in der Schriftrolle, also wo soll ich anfangen, dies zu beheben?Danke.

War es hilfreich?

Lösung

Ich werde dies zu einer tatsächlichen Antwort machen, anstatt nur mehr Kommentare.

Erste Sache:versuchen curl 'http://localhost:80' innerhalb der VM.Wenn das nicht funktioniert, dann ist es definitiv nicht die Portweiterleitung.

Nächsten:versuchen curl -v 'http://localhost:4567/' von Ihrem Host-Rechner.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.Die Standard-Vagrant-VM (Ubuntu) wird nicht mit einer eingerichteten Firewall geliefert, aber Sie sagten, Sie verwenden etwas anderes, daher lohnt es sich möglicherweise, dies zu überprüfen.

Wenn das nicht der Fall ist, versuchen Sie, etwas anderes als Apache auf Port 80 aufzulisten.Python wird mit einem einfachen HTTP-Server geliefert, den Sie verwenden können - gehen Sie in den Ordner mit index.html und renne sudo python -m SimpleHTTPServer 80, dann versuche das mit Curl aus beiden Boxen zu schlagen.Wenn das funktioniert, liegt es wahrscheinlich an einem Apache-Konfigurationsproblem.Ich habe nicht genug Erfahrung mit Apache, um zu helfen, wenn das der Fall ist (ich benutze nginx).

Andere Tipps

Ich wollte einen zusätzlichen Hinweis hinzufügen, dass dies oft vom Server innerhalb der VM verursacht wird, weil er an bindet 127.0.0.1, das ist Loopback.Sie sollten sicherstellen, dass der Server an gebunden ist 0.0.0.0 damit alle Schnittstellen darauf zugreifen können.

Einige integrierte App-Server wie Djangos Entwicklungsserver und einige Ruby-Server sind standardmäßig auf 127.0.0.1 standardmäßig ist dies also etwas, auf das Sie achten sollten.

Abgesehen davon gilt, 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.

Ich hatte das gleiche Problem unter CentOS 6.3 mit NGINX und fand die Antwort in den iptables auf der Vagrant Box.

Befolgen Sie von Bash auf der Vagrant-Box die folgenden Schritte:

Listen Sie zuerst die aktuellen iptable-Regeln auf

iptables -L -v

Spülen Sie dann die aktuellen Regeln:

iptables -F

Erlaube SSH-Verbindungen auf TCP-Port 22

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Festlegen von Standardrichtlinien für EINGABE-, WEITERLEITUNGS- und Ausgabeketten

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

Zugriff für localhost festlegen

iptables -A INPUT -i lo -j ACCEPT

Pakete akzeptieren, die zu etablierten und verwandten Verbindungen gehören

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Einstellungen speichern

/sbin/service iptables save

Geänderte Regeln auflisten

iptables -L -v

Curl localhost:[port #] oder drücke es in deinem Browser von außerhalb vagrant

Weitere Informationen zu CentOS iptable-Konfigurationen finden Sie hier:

http://wiki.centos.org/HowTos/Network/IPTables

Glück.

Eine bessere Lösung für mich ist das Deaktivieren der Firewall

service iptables stop
chkconfig iptables off

Ich möchte noch eine Notiz wie Mitchell hinzufügen.wenn mein Fall ist, leite ich ihn von 80 an 6789 weiter

$ curl -v http://localhost:6789

Und ich habe

<HTML>
<HEAD><TITLE>Redirection</TITLE></HEAD>
<BODY><H1>Redirect</H1></BODY>

Dann habe ich stattdessen die IP-Adresse verwendet, sie hat die richtige HTML-Nachricht erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top