0

アップストリームを介してnginx + nodejsを次のようにしています:

server {

  listen 0.0.0.0:80;

  upstream app_nodejs {
    server 127.0.0.1:3000;
  } 

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://app_nodejs;
    proxy_redirect off;
  }
}

ブラウザーで mysite.com にアクセスすると、80 ポート経由で入力し、3000 にルーティングされます。ただし、www.mysite.com:3000 のように、3000 ポート経由でアプリケーションに直接アクセスできます。この場合、proxy_pass は使用しません。

proxy_pass 経由ではない 3000 ポートへのアクセスを防ぐにはどうすればよいですか?

編集: http モジュールを使用してアプリケーションを起動していますが、このアプローチをどのように使用できますか?:

http.createServer(express()).listen(3000, function(req, res) {     
});
4

1 に答える 1

0

受信リクエスト用にポート 3000 にファイアウォールを配置するか、(できれば) 単純nodeに localhost のみをリッスンする必要があります。

server.listen(3000, '127.0.0.1');

...またはあなたの場合;

http.createServer(express()).listen(3000, '127.0.0.1', function(req, res) { 
   ...
});
于 2013-08-07T07:42:17.810 に答える