43

textmate を介して実行する単純な Sinatra サーバーがありますが、同じネットワーク上の別のコンピューターからはアクセスできません。

Mac OS 10.8.3 で Ruby 1.9.3p327 と Sinatra 1.4.1 を実行しています。ファイアウォールが無効になっています。

異なるネットワークとコンピューターで同じシナリオをテストしました。

コンピュータは単純な ping に応答しますが、ポート 4567 に telnet で接続しようとすると、接続を確立できません。

4

3 に答える 3

88

セキュリティ上の懸念から、デフォルトのリッスン アドレスを開発モードから変更したSinatra への最近のコミットがありました。localhost0.0.0.0

ネットワークからのアクセスを明示的に許可するには、アプリを別のモード (本番環境など) で実行するか、bindオプションを に設定する必要があります0.0.0.0

-oオプションを使用して、組み込みサーバーを使用してコマンドラインからこれを行うことができます。

$ ./my_sinatra_file.rb -o 0.0.0.0
于 2013-03-28T18:31:29.863 に答える
5

sinatra サーバーがローカルホスト (127.0.0.1) の IP アドレスだけをリッスンしていないことを確認してください。

于 2013-03-28T15:37:26.270 に答える
0

私のような人々が壁に頭をぶつけてしまうのを助けるかもしれない少しの追加情報で、私は声を上げています.

私は Mac ではなく Windows マシンを使用しており、使用していたポート (Sinatra のデフォルトは 4567) を一般公開する必要がありました (大学のネットワークに接続しているにもかかわらず)。

Windows 10 でこれを行うには:

  1. Windows キーを押します
  2. ファイアウォールを検索し、Enter キーを押します
  3. 詳細設定に移動
  4. 左上の受信ルールをクリックします
  5. 右上の新しいルールをクリック
  6. ポートオプションをクリックします
  7. ポートを入力してください (おそらく Sinatra の場合は 4567)
  8. 次に、ドメイン/プライベート/パブリックから選択します。

ここで考慮すべきもう 1 つのことは、誰が Web サーバーにアクセスできるかということです。誰かが欲しい場合は、公開を選択してください。同じパブリックネットワーク上のデバイスのみを接続する方法がよくわかりません(他の人の意見が欲しいです)。特定の IP の通過を許可することもできますが、そのためには自分で調査することをお勧めします。

于 2016-11-12T21:51:26.710 に答える