web-dev-qa-db-ja.com

LAN上のNodeJSサーバーにアクセスする方法

私はネットワーキングでこれまでに最も知識のある人ではありませんが、ここに行きます...

NodeJSでアプリケーションを作成しましたが、LAN上のアプリケーションを家族とテストしたいと思います。アプリケーションはポート1337で接続をリッスンし、ブラウザのアドレスバーにlocalhost:1337192.168.0.3:1337、またはhttp://joel-pc:1337/と入力するだけで、自分のPCからアプリケーションに正常にアクセスできます。

また、NodeJSと一緒にApacheを実行する予定です。同じネットワークに接続されている限り、ブラウザのアドレスバーに192.168.0.3またはhttp://joel-pc/と入力することで、この問題にアクセスできます。

ここで奇妙な部分があります。 Apacheサービスを停止する場合は、ノードアプリケーションを変更して、ポート80(http)で1337を挿入するようにリッスンします。ブラウザーのアドレスバーにlocalhost192.168.0.3またはhttp://joel-pcと入力すると、PCでアクセスできます。ただし、自分のネットワーク以外のPCでNodeJSにアクセスすることはできません。

Windows 7でポート1337へのアクセスを許可する送信ルールを作成しようとしましたが、ポート80でリッスンしている場合でも、自分以外のPC上のNodeJSサーバーにアクセスできません。明らかなものはありますか?私はここで逃していますか?

16
Joel Murphy

ほとんどの場合、ノードアプリケーションは「すべてのIP」_127.0.0.1_ではなくループバックIPアドレス_0.0.0.0_にバインドしています。これはlistenのデフォルトの動作だからです。 server.listen(80, '0.0.0.0');のように呼び出しでポートとIPの両方を指定して、再試行してください。

11
Peter Lyons

現在のローカルネットワークIPを取得し、httpサーバーを次のように実行します。

server.listen(80, 'current_local_ip');
6

私はこの問題の良い解決策を見つけました。すべての構成(ファイアウォール、転送ポートなどの設定)を行うのではなく、ローカルノードサーバーをインターネット経由で公開するためのユーティリティであるlocaltunnelを使用しました。開発、テスト、共有の目的で使用できますが、本番環境では使用しないでください。

最初に、次のようにlocaltunnelをインストールする必要があります。

$npm install -g localtunnel

その後、ノードサーバーがlocalhostで実行されるようにノードアプリを構成します。例:

server.listen(3000, function () {
console.log('Listening to port:  ' + port);
});

your_portを書き留めます(私の場合は3000)。ノードを起動します。サーバ。

別のターミナルを開き、次のコマンドを入力してlocaltunnelを実行します。

$lt --port 3000

この後、ターミナルで、開発/テスト目的で使用できるURLを取得します。このURLはインターネットで利用できるため、他のユーザーと共有することもできます。ローカルトンネルが実行されている限り、他のユーザーがローカルノードサーバーにアクセスできます。

その他の構成オプション/ヘルプについては、ドキュメントを参照してください: https://www.npmjs.com/package/localtunnel

3

以下を行うことは、Windows PCで私のために働きました。これを試してください:開く

コントロールパネル\システムとセキュリティ\ Windows Defender Firewall \許可されたアプリ

次に、リストでnode.jsを探し、[設定の変更]をクリックします。[プライベートアクセス]がオンになっていることを確認して、[OK]をクリックします。

3
Thunder

最初に、ファイアウォールの信頼済みアプリケーションのリストにC:\Program Files (x86)\nodeを追加する必要があります。

次に、ノードアプリで次のように記述できます。

listen(3333, '172.24.14.26', function() {

または:

listen(3333, '0.0.0.0', function() {

または:

listen(3333, function() {

または:

listen(80, '172.24.14.26', function() {

または:

listen(80, '0.0.0.0', function() {

または:

listen(80, function() {

私の場合、これらの6つの組み合わせのそれぞれが機能します。WindowsServer 2016のnode.jsは、会社のプロキシによって保護されています。

3