我通过上游有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) {
});
答案 0 :(得分:0)
您需要在端口3000上设置防火墙以接收传入请求,或者(最好)只让node
只监听localhost,例如;
server.listen(3000, '127.0.0.1');
......或者在你的情况下;
http.createServer(express()).listen(3000, '127.0.0.1', function(req, res) {
...
});