web-dev-qa-db-fra.com

Pourquoi Ruby on Rails utilise-t-il http://0.0.0.0:3000 au lieu de http: // localhost: 3000?

Je suis très nouveau sur Ruby on Rails, alors quand j’ai essayé de suivre le didacticiel officiel "Getting Started" de Ruby on Rails, j’ai été un peu déçu car cela s’était très mal passé. En gros, il disait:

… Naviguez vers http: // localhost: 3000 . Vous devriez voir la page d’informations par défaut de Rails.

Mais quand je suis les instructions, je reçois

 => Application Rails 2.3.4 commençant à http://0.0.0.0:3000

Après avoir essayé les deux adresses, je sais qu'elles indiquent la même chose, mais quelqu'un peut-il m'expliquer pourquoi Ruby on Rails utilise http://0.0.0.0:3000 au lieu de http://localhost:3000?

Existe-t-il un moyen de toujours avoir le serveur WEBbrick utiliser localhost?

37
Lou

Localhost signifie littéralement "votre hôte local", généralement identifié par 127.0.0.1 et tout le trafic vers cette adresse est routé via une interface de bouclage. Si votre serveur Web est à l'écoute des connexions sur 127.0.0.1, cela signifie qu'il accepte uniquement les demandes provenant du même hôte.

0.0.0.0 signifie que Rails écoute sur toutes interfaces, pas seulement l'interface de bouclage.

55
andri

0.0.0.0 signifie toutes les interfaces. Y compris 127.0.0.1 a.k.a. localhost.

20

Pour que tout le monde sache, mon navigateur firefox affiche correctement le serveur hébergé localement si j'accède à http://localhost:3000/ mais il ne s'affiche PAS lorsque j'essaie d'accéder à http://0.0.0.0:3000/a recommandé par Ruby. Clairement, dans un certain sens, ils ne sont pas équivalents.

Je suis sur Windows d'ailleurs.

1
John Vandivier

Si vous voulez localhost, un moyen rapide est de spécifier la liaison Rails s -blocalhost (et le port avec -pNNNN, plus d'options avec Rails s --help).

Mon serveur a commencé à fonctionner par défaut sur localhost pour des raisons à examiner. En conséquence, lvh.me a cessé de fonctionner, m'empêchant de spécifier des sous-domaines (par exemple: www.lvh.me:3000).

J'ai "résolu" ceci en spécifiant la liaison:

Rails s -b0.0.0.0 # will work with lvh.me
1
ecoologic

Le redémarrage de l'OS fonctionne pour moi. (Sur Mac v 10.12)

0
Omer Aslam

En réalité, Rails a différentes options de configuration pour savoir s'il écoute quelque chose de spécifique ou toutes les interfaces.

0
jellohead

Message d'avertissement Rails 4.1.

Pour votre information, sur Rails 4.1, vous recevrez un message d’avertissement au démarrage qui ressemble à ceci: 

=> 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)

Cela indique que la liaison à 0.0.0.0 n'est pas recommandée et que vous devriez plutôt utiliser 127.0.0.1

Dans Rails 4.2+, la liaison par défaut du serveur Rails est localhost au lieu de 0.0.0.0 ou même 127.0.0.1.

0
Joshua Pinter

Pour ceux d'entre nous qui utilisent l'environnement de serveur virtuel Nitrous.io pour le développement, je pense que nous devons nous lier à 0.0.0.0 car il n'y a pas d'hôte local en soi.

0
Rob R