“如果#nginx没有坐在您的节点服务器前面,那么您可能做错了。”
- Bryan Hughes通过Twitter
现在,我一直在用Node.js创建应用程序,正如Mr.Hughes建议的那样,使用Nginx作为反向代理服务它们。但我不确定我是否正确执行因为我仍然可以通过互联网访问我的Node.js应用程序而无需通过Nginx服务器。
其核心是典型的应用程序非常简单。它与ExpressJS一起提供如下:
( | V1 - V2 | / ((V1 + V2)/2) ) * 100
= ( | 7606 - 6000 | / ((7606 + 6000)/2) ) * 100
= ( | 1606 | / (13606/2) ) * 100
= ( 1606 / 6803 ) * 100
= 0.236072 * 100
和Nginx配置为反向代理,如下所示:
var express = require("express");
var app = express();
// ...
app.listen(3000);
这非常有效!但是我注意到一种我不确定是可取的行为,并且可能首先打破了使用Nginx作为反向代理的大部分目的:
假设example.org是指向我的服务器的域名,我可以导航到# ...
location / {
proxy_pass http://127.0.0.1:3000;
}
# ...
并从任何地方与我的应用程序交互,而无需触及Nginx服务器。
典型的最终用户永远不会有任何理由导航到http://www.example.org:3000
,因此这永远不会影响他们。不过,我担心的是,这可能会对非最终用户可能利用的安全性产生影响。
即使Nginx被用作反向代理,应该是否可以直接访问应用程序?
如何配置应用程序以使其仅可用于本地计算机/网络/ Nginx服务器?