2016-09-23 3 views
1

Node.jsを使用して専用のPCでWebサーバーをホストすることを検討していますが、ローカルネットワーク以外の場所からNode.jsにアクセスすると思われます。外部Hello Worldサーバーノードjs

インターネットから見つかったものから、別のネットワーク上のブラウザにexternalIp:portを入力するだけで、Hello Worldが表示されるはずですが、localhostを公開せずに動作させることはできませんngrokのようなものを通して。

ローカルホストだけでなく、インターネット上の外部PCからノードサーバーにアクセスする方法を知っている人はいますか?ここで

は、 "ノードserver.js"

require("http").createServer(function(request, response){ 
    response.writeHeader(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World!"); 
    response.end(); 
}).listen(8080); 
  1. を再現するためのステップです - '!Hello Worldのをただ送信ポート8080でホストしている非常に単純なサーバー応答
  2. 私のマシンでlocalhost:8080をチェックします。「Hello World!」を参照してください。作業
  3. GET externalIPからipchicken.com
  4. チェック 'externalIP':8080、外部機器(携帯電話、差分ネットワークPC)上で、決してたぶんそこに私が行方不明です何かがあるが、私はこれを考えた

を働きません

+0

わからないが、しかし、あなたは自宅のルータの背後にいる場合は、ポート転送を設定する必要があります。 – esqew

+0

私は1つの問題がポートフォワーディングになると思うし、時には最も一般的な問題はファイアウォールがオンになっていることだと思います。あなたの環境がLinuxの場合は、iptablesとWindowsファイアウォールを停止する必要があります – selftaught91

答えて

1

したがって、私が使用していたルータには、ポート80トラフィックを許可するための「特別な」設定ページがあります。また、ポート転送ページにはどこにもリンクがありません。だから、すべてのポート転送を行った後、あなたがこのリンクに従うことを確認してください:ネットワーク環境がどのようなものであるか

http://optimumdev.custhelp.com/app/answers/detail/a_id/2140/related/1

0

かなり簡単だったあなたは利用可能なすべてのIPインタフェースにサービスをバインドする必要があり、あなたがに8080を聞く変更:あなたは駅を持っていると仮定すると

require("http").createServer(function(request, response){ 
    response.writeHeader(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World!"); 
    response.end(); 
    }).listen(8080, "0.0.0.0") 
0

あなたの外部IPアドレスにリクエストを送信し、それが魔法のようにあなたのマシンに届くと期待することはできません。要求はあなたのルータに当たるでしょう、そして、ルータはそれに何をするかを知らないでしょう。ポート8080の要求をローカルアドレス(おそらく192.168.0.xなど)に転送するようにルータを設定する必要があります。それでも十分ではないかもしれません。そのポートで着信要求を許可するには、マシン上にソフトウェアファイアウォールを設定する必要があります。これが役に立ちますようお願いいたします。

+0

ポートフォワーディングとファイアウォールを設定したので、Wireshark経由で送受信されている2つのパケットを見ることができます。しかし、私は偽の再送信(私の電話と私のPCから)のトンに気付き、電話ではまだ "Hello World"はありません。コミュニケーションはそこにはありません:/ – Stephen