2017-04-04 10 views
0

どうですか?セキュリティグループでもすべてを許可していても、Amazon EC2マシンに外部からアクセスする際のタイムアウト

私の(ドッキングされていない)アプリケーションへの外部アクセスに関する質問があります。

私は、次のコードファイルでsocket.ioを使って簡単なピンポンソケット通信を持っている:

server.js

let Server = require('socket.io') 

const io = new Server().attach(8090) 

io.on('connection', (socket) => { 
    console.log('connection') 
    socket.on('message', (msg) => { 
    console.log('< ' + msg) 
    console.log('> pong') 
    socket.emit('event', 'pong') 
    }) 
}) 

client.js

let host = process.argv[2] 
let io = require("socket.io-client"); 

let client = io.connect(`http://${host}`) 

let connected = false 
client.on('connect',() => { 
    connected = true 
}) 

client.on('event', (msg) => { 
    console.log('< ' + msg) 
    ping() 
}) 


function ping() { 
    if (!connected) { 
    setTimeout(ping, 1000) 
    } else { 
    setTimeout(() => { 
     console.log('> ping') 
     client.emit('message', 'ping'); 
    }, 1000) 
    } 
} 
ping() 

私のサーバを立ち上げて実行すると、クライアントを実行して次のような通信をテストできます:

$ node client.js localhost:8090 

、出力は次のようになります。私は私のEC2のマシンの外に、この(クライアントとサーバーの両方)をテストするとき

> ping 
< pong 
> ping 
< pong 
> ping 
< pong 
... and so on 

すべてが正常に動作しますが、私はにserver.jsを展開するときクラウドして走らせて、外からは届かない。

ポート80または81でnginx Webサービスをバインドし、アプリケーションにリクエストするたびにクラウドの外部からすべてが正常に動作し始めますが、それでも他のポートでは機能しません。

私のセキュリティグループは、(テスト目的のために)(すべてのポート上のどこからでも(0.0.0.0/0、::/0)からのすべてのトラフィックを許可するインバウンドおよびアウトバウンド)です(スクリーンショットが添付されています)。トラブルシューティングのために有用である可能性が

もの:

  • 私は同じポート上のノードを使用して(nginxのなし)NodeJS HTTPサーバーをしようとすると、それが機能しないか(のみ80および81上で動作します)
  • 私のマシンは、すべてのトラフィックが許可されている「完全に公開されていない」セキュリティグループに属していると確信しています。
  • クラウドマシン内のパブリックアドレスまたはローカルホストを使用してアプリケーションに接続できるため、アプリケーションがすべてのアドレスにバインドされています。
  • 私は任意のヘルプやトラブルシューティングの提案は非常に理解されるであろうNodeJSアプリケーション

と同じマシン上でnginxのWebサーバーからの接続をproxy_pass場合にのみ、ポート80と81で動作します。

は以下

お時間をどうもありがとうございましたセキュリティグループの定義とスクリーンショットです: security group rules

答えて

0

私の問題を解決し、これは恥ずかしいですました。私のローカルネットワークは、私が言及したポートでアウトバウンド接続を許可していませんでした。

同じ問題が発生した場合は、ローカルネットワークをテストすることをおすすめします。また、iptablesのルールを確認してください。

関連する問題