Waarom gebruikt Ruby on Rails http://0.0.0.0:3000 in plaats van http://localhost:3000?

Ik ben erg nieuw in Ruby on Rails, dus toen ik probeerde de officiële “Aan de slag” ruby on rails-tutorial te volgen, was ik een beetje teleurgesteld omdat het heel snel fout. Eigenlijk stond er:

…navigeer naar http://localhost:3000. Je zou de standaard informatiepagina van Rails moeten zien.

Maar als ik de instructies volg, krijg ik

=> Rails 2.3.4 applicatie start op http://0.0.0.0:3000

Na beide adressen geprobeerd te hebben, weet ik dat ze naar hetzelfde verwijzen, maar kan iemand me uitleggen waarom Ruby on Rails http://0.0.0.0:3000gebruikt in plaats van http://localhost:3000?

Is er een manier om de WEBrick-server altijd localhost te laten gebruiken?


Antwoord 1, autoriteit 100%

Localhost betekent letterlijk “uw lokale host”, meestal aangeduid met 127.0.0.1 en al het verkeer naar dat adres wordt omgeleid via een loopback-interface. Als uw webserver luistert naar verbindingen op 127.0.0.1, betekent dit dat deze alleen verzoeken accepteert die van dezelfde host komen.

0.0.0.0 betekent dat Rails luistert op alleinterfaces, niet alleen op de loopback-interface.


Antwoord 2, autoriteit 34%

0.0.0.0betekent alle interfaces. Inclusief 127.0.0.1a.k.a. localhost.


Antwoord 3, autoriteit 3%

Zodat iedereen het weet, mijn Firefox-browser geeft de lokaal gehoste server correct weer als ik toegang heb
http://localhost:3000/
maar het wordt NIET weergegeven wanneer ik probeer toegang te krijgen
http://0.0.0.0:3000/
zoals aanbevolen door Ruby. Het is duidelijk dat ze in zekere zin niet gelijkwaardig zijn.

Ik gebruik Windows trouwens.


Antwoord 4, autoriteit 3%

Als u localhostwilt, is een snelle manier om de bindende rails s -blocalhostte specificeren (en de poort met -pNNNN, meer opties met rails s --help).

Mijn server begon standaard te draaien op localhostom te onderzoeken redenen. Als gevolg hiervan werkte lvh.meniet meer, waardoor ik geen subdomeinen kon specificeren (bijvoorbeeld: www.lvh.me:3000).

Ik heb dit “opgelost” door de binding te specificeren:

rails s -b0.0.0.0 # will work with lvh.me

Antwoord 5, autoriteit 3%

Rails 4.1 Waarschuwingsbericht.

Ter info, op Rails 4.1 krijg je een waarschuwingsbericht bij het opstarten dat er als volgt uitziet:

=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)

Dit geeft aan dat het binden aan 0.0.0.0niet wordt aanbevolen en dat u in plaats daarvan 127.0.0.1moet gebruiken.

In Rails 4.2+ is de standaardbinding van de Rails-server naar localhostin plaats van 0.0.0.0of zelfs 127.0.0.1.


Antwoord 6

Eigenlijk heeft rails verschillende configuratie-opties over of het naar iets specifieks luistert of naar alle interfaces.


Antwoord 7

Voor degenen onder ons die Nitrous.io virtuele serveromgeving gebruiken voor ontwikkeling, geloof ik dat we ons moeten binden aan 0.0.0.0 omdat er op zich geen localhost is.


Antwoord 8

Herstart het besturingssysteem werkt voor mij. (Op Mac v 10.12)

Other episodes