通过apache访问nodejs

时间:2017-03-01 10:56:12

标签: angularjs node.js apache security reverse-proxy

我想在我的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>

我需要你的帮助和建议!提前感谢您阅读本文!

1 个答案:

答案 0 :(得分:0)

改变这个:

app.listen(port);

到此:

app.listen(port, 'localhost');

而不是mydomain:8080在您的Apache配置中使用localhost:8080

这将告诉您的Node应用程序仅在环回接口上侦听,并且它不会回复来自与其自身不同的主机的任何请求。但要实现这一点,您必须将代理配置更改为localhost,因为即使代理配置在同一台计算机上,您的代理也无法使用与环回不同的接口连接到节点应用程序。 / p>

处理所有这些问题的另一种方法是在TCP / IP级别上过滤数据包,但首先它更容易绑定到特定接口。