私はネットワーキングでこれまでに最も知識のある人ではありませんが、ここに行きます...
NodeJSでアプリケーションを作成しましたが、LAN上のアプリケーションを家族とテストしたいと思います。アプリケーションはポート1337
で接続をリッスンし、ブラウザのアドレスバーにlocalhost:1337
、192.168.0.3:1337
、またはhttp://joel-pc:1337/
と入力するだけで、自分のPCからアプリケーションに正常にアクセスできます。
また、NodeJSと一緒にApacheを実行する予定です。同じネットワークに接続されている限り、ブラウザのアドレスバーに192.168.0.3
またはhttp://joel-pc/
と入力することで、この問題にアクセスできます。
ここで奇妙な部分があります。 Apacheサービスを停止する場合は、ノードアプリケーションを変更して、ポート80
(http)で1337
を挿入するようにリッスンします。ブラウザーのアドレスバーにlocalhost
、192.168.0.3
またはhttp://joel-pc
と入力すると、PCでアクセスできます。ただし、自分のネットワーク以外のPCでNodeJSにアクセスすることはできません。
Windows 7でポート1337へのアクセスを許可する送信ルールを作成しようとしましたが、ポート80でリッスンしている場合でも、自分以外のPC上のNodeJSサーバーにアクセスできません。明らかなものはありますか?私はここで逃していますか?
ほとんどの場合、ノードアプリケーションは「すべてのIP」_127.0.0.1
_ではなくループバックIPアドレス_0.0.0.0
_にバインドしています。これはlisten
のデフォルトの動作だからです。 server.listen(80, '0.0.0.0');
のように呼び出しでポートとIPの両方を指定して、再試行してください。
現在のローカルネットワークIPを取得し、httpサーバーを次のように実行します。
server.listen(80, 'current_local_ip');
私はこの問題の良い解決策を見つけました。すべての構成(ファイアウォール、転送ポートなどの設定)を行うのではなく、ローカルノードサーバーをインターネット経由で公開するためのユーティリティである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
以下を行うことは、Windows PCで私のために働きました。これを試してください:開く
コントロールパネル\システムとセキュリティ\ Windows Defender Firewall \許可されたアプリ
次に、リストでnode.jsを探し、[設定の変更]をクリックします。[プライベートアクセス]がオンになっていることを確認して、[OK]をクリックします。
最初に、ファイアウォールの信頼済みアプリケーションのリストに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は、会社のプロキシによって保護されています。