テキストメイトを介して実行する単純なSinatraサーバーがありますが、同じネットワーク上の別のコンピューターからアクセスできません。
Mac OS 10.8.3でRuby 1.9.3p327およびSinatra 1.4.1を実行しています。ファイアウォールが無効になっています。
同じシナリオを別のネットワークとコンピューターでテストしました。
コンピューターは単純なpingに応答しますが、ポート4567にtelnetで接続しようとすると、接続を確立できません。
セキュリティ上の問題により、開発モードで Sinatraへの最近のコミット がデフォルトのリスンアドレスを0.0.0.0
からlocalhost
に変更しました。
ネットワークからのアクセスを明示的に許可するには、アプリを別のモード(本番など)で実行するか、 bind
オプション を0.0.0.0
に設定する必要があります。
これは、組み込みサーバーを使用してコマンドラインから-o
オプションを使用して実行できます。
$ ./my_sinatra_file.rb -o 0.0.0.0
Sinatraサーバーがローカルホスト(127.0.0.1)のIPアドレスのみをリッスンしていないことを確認します。
私は、私のような人々が頭を壁にぶつけているのを助けるかもしれない少しの追加情報で口をそろえています。
私はMacではなくWindowsマシンを使用しており、使用しているポート(Sinatraのデフォルトは4567)を一般に公開する必要がありました(大学のネットワークに接続している場合でも)。
Windows 10でこれを行うには:
次に考慮すべきもう1つのことは、Webサーバーにアクセスできるユーザーです。あなたが誰かをしたい場合は、パブリックを選択してください。同じパブリックネットワーク上のデバイスのみを接続する方法は確かにわかりません(他の人の入力も気に入っています)。特定のIPの通過を許可することもできますが、そのためには自分で調査することをお勧めします。