2015-03-16 16 views
25

Ich verwende "www.xip.io" als DNS-Platzhalter zum Testen auf verschiedenen Geräten. Ich habe meine primäre Domain auf meine IP-Adresse eingestellt. Ich feuere einen Rails Server mit bundle exec rails server an und ich gehe hier www.<ip_address>.xip.io:3000 und bemerke, dass mein Rails Server nicht antwortet.Was kostet die Bindung eines Rails Servers an 0.0.0.0?

Allerdings, wenn ich meine Rails Server an 0.0.0.0 wie so bundle exec rails server -b 0.0.0.0 binden, funktioniert es! Ich verstehe nicht, was 0.0.0.0 meinem Server sagt, dass dies funktioniert. Kann jemand Sinn machen?

Antwort

41

Bindung an 0.0.0.0 weist den Dienst an, an alle IP-Adressen auf Ihrem Computer zu binden. Der Rails-Server verwendet dies standardmäßig, aber mit 4.2 wurde nur in localhost geändert.

Grundsätzlich, wenn es nur auf localhost gebunden ist, dann wird es nur lokal entweder localhost oder 127.0.0.1 zu reagieren, die nicht über einen DNS-Dienst arbeiten kann, weil es Adresse keine öffentliche IP ist.

Wenn Sie 0.0.0.0 verwenden, wird es an localhost und an Ihre routingfähige IP-Adresse gebunden.

+1

Perfekt. Danke für den 4,2 Nugget. – andy4thehuynh

+4

Gern geschehen, es war eine böse (schlecht publizierte) Gotcha für viele Leute. – smathy

+3

Oh man, das hat mich absolut verrückt gemacht. Wenn Sie versuchen, Schienen aus einem Andockcontainer auszuführen, und Sie diese Option nicht angeben, reagiert der Andockcontainer nicht, unabhängig davon, was Sie tun. Dies ist ein Lebensretter. –

-1

Ich denke, Sie müssen verbindlich verwenden, wenn Sie in einem Gast/virtuellen Maschine sind.