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。但我可以通过 3000 端口直接访问我的应用程序,如下面的 www.mysite.com:3000。在这种情况下,我不使用 proxy_pass。

如何防止不通过 proxy_pass 访问 3000 端口?

编辑:我正在使用 http 模块来启动应用程序,那么我该如何使用这种方法?:

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

1 回答 1

0

您需要在端口 3000 上设置防火墙以接收传入请求,或者(最好)只node监听本地主机,例如;

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 回答