我想在我的nodejs应用程序上添加安全性。
为此,我添加了一个带有apache的proxyReverse来访问带有apache的节点应用程序。 它正在工作,但问题是我仍然能够访问我的节点应用程序而无需通过apache ...
我的节点网站位于mydomain:8080 / html / site.html 我在mydomain / site
上访问带有apache的节点所以我想要的是将mydomain:8080 / html / site.html重定向到mydomain / site ...
但是我可以无限制地打电话。
这是我的节点 server.js :
var express = require('express');
var port = 8080;
/*------------------------
Configuration
------------------------*/
app = express();
app.use(express.static('public'));
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
/* Port d'ecoute du serveur */
app.listen(port);
这是我的 apache2.conf :
<VirtualHost 172.30.0.10:80 >
ServerName "mydomain:80"
UseCanonicalName Off
ProxyPass /site http://mydomain:8080/html/site.html
ProxyPassReverse /site http://mydomain:8080/html/site.html
<Proxy *>
Order deny,allow
Allow from all
Authtype Basic
Authname "Password Required"
AuthUserFile /etc/apache2/passwords
Require valid-user
</Proxy>
</VirtualHost>
我需要你的帮助和建议!提前感谢您阅读本文!
答案 0 :(得分:0)
改变这个:
app.listen(port);
到此:
app.listen(port, 'localhost');
而不是mydomain:8080
在您的Apache配置中使用localhost:8080
。
这将告诉您的Node应用程序仅在环回接口上侦听,并且它不会回复来自与其自身不同的主机的任何请求。但要实现这一点,您必须将代理配置更改为localhost
,因为即使代理配置在同一台计算机上,您的代理也无法使用与环回不同的接口连接到节点应用程序。 / p>
处理所有这些问题的另一种方法是在TCP / IP级别上过滤数据包,但首先它更容易绑定到特定接口。