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


12

私はこれまでネットワークの知識が豊富ではありませんが、ここに行きます...

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

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

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

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


2
テストとしてのみ、ファイアウォールをオフにした場合はどうなりますか?
cheesemacfly

1
ファイアウォールをオフにすると、ノードに完全にアクセスできます。ありがとうございます:)
ジョエルマーフィー

1
私はそれを元に戻しました、心配しないでください:)私もそこに投稿する必要がありますか?または、私の質問を移動する方法はありますか?ありがとう
ジョエルマーフィー

2
乾杯。私は別のスレッドで読むので、私はそれが何らかのアクションがモデレーターによって取られる前に、3人のユーザーがフラグを立てることが必要であることもそれをフラグが立て
ジョエル・マーフィーを

2
私が掲げた旗は役立っていると考えられているので、どれくらい時間がかかるかわからない!
cheesemacfly

回答:


10

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


3
これを行っても、LAN上の他のデバイスのノードにはアクセスできません。私のコードは次のようになります:var io = require( 'socket.io'); var express = require( "express"); var app = express(); var server = require( 'http')。createServer(app)io = io.listen('80 '、' 0.0.0.0 ');
ジョエルマーフィー

2
これは私の場合はうまくいきました。いくつかの無線ネットワークではlocalhost、文字列として動作しますが、他の人に、あなたはとしてそれを入力する必要が127.0.0.1
ラウルルネ


3

まず、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

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

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

$npm install -g localtunnel

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

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

私の場合は3000だったyour_portを書き留め、ノードサーバーを起動します。

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

$lt --port 3000

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

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


2

Windows PCで次の作業を行った。これを試してください:オープン

コントロールパネル\システムとセキュリティ\ Windows Defender Firewall \ Allowed apps

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.