web-dev-qa-db-fra.com

Impossible d'accéder au serveur Sinatra local à partir d'un autre ordinateur sur le même réseau

J'ai un simple serveur Sinatra que j'exécute via textmate mais je ne peux pas accéder à partir d'un autre ordinateur sur le même réseau.

J'exécute Ruby 1.9.3p327 et Sinatra 1.4.1 sur un Mac OS 10.8.3. Le pare-feu est désactivé.

J'ai testé le même scénario sur différents réseaux et ordinateurs.

L'ordinateur répond à des pings simples mais lorsque j'essaie de connecter le port 4567 telnet, je ne peux pas établir de connexion.

44
Thiago Peres

Il y avait un commit récent pour Sinatra qui a changé l'adresse d'écoute par défaut en localhost de 0.0.0.0 en mode développement pour des raisons de sécurité.

Pour autoriser explicitement l'accès à partir du réseau, vous devez soit exécuter votre application dans un autre mode (par exemple, la production), soit définir bind option sur 0.0.0.0.

Vous pouvez le faire à partir de la ligne de commande en utilisant le serveur intégré en utilisant le -o option:

$ ./my_sinatra_file.rb -o 0.0.0.0
89
matt

Assurez-vous que le serveur sinatra n'écoute que sur l'adresse IP localhost (127.0.0.1).

5
DGM

J'interviens avec un peu d'informations supplémentaires qui pourraient aider des gens comme moi à se cogner la tête contre le mur.

Je suis sur une machine Windows, pas un Mac, et j'ai dû ouvrir le port que j'utilisais (par défaut pour Sinatra est 4567) au public (même si je suis sur un réseau universitaire).

Pour ce faire dans Windows 10:

  1. Appuyez sur la touche Windows
  2. Recherchez un pare-feu et appuyez sur Entrée
  3. Accédez aux paramètres avancés
  4. Cliquez sur les règles entrantes en haut à gauche
  5. Cliquez sur la nouvelle règle en haut à droite
  6. Cliquez sur l'option de port
  7. Entrez votre port (probablement 4567 pour Sinatra)
  8. Prochain
  9. Et maintenant, choisissez parmi domaine/privé/public.

Maintenant, une autre chose à considérer est de savoir qui peut accéder à votre serveur Web. Si vous voulez quelqu'un, choisissez public. Je ne sais pas avec certitude (et j'adorerais les commentaires des autres) comment obtenir uniquement des appareils sur le même réseau public pour se connecter. Vous pouvez également autoriser des adresses IP spécifiques, mais pour cela, je vous suggère de faire des recherches par vous-même.

0
Jellio