2017-03-01 69 views
1

我想在我的nodejs應用程序中添加安全性。通過apache訪問nodejs

爲此,我添加了apache的proxyReverse以使用apache訪問我的節點應用程序。 它的工作,但問題是,我仍然能夠不通過Apache要訪問我節點應用...

我的節點部位是MYDOMAIN:8080/HTML/site.html 我訪問與MYDOMAIN /網站

阿帕奇節點所以我要的是重定向MYDOMAIN:8080/HTML/site.html到MYDOMAIN /網站...

但我是可怕的,使一個無限通話。

這裏是我的節點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

更改此:

app.listen(port); 

這樣:的mydomain:8080

app.listen(port, 'localhost'); 

,轉而使用localhost:8080在你的Apache配置。

這會告訴您的Node應用程序僅在回送接口上偵聽,並且它不會回覆源自與其自身不同的主機的任何請求。但對於工作,你有你的代理服務器的配置更改爲localhost,因爲你的代理將無法連接到使用不同的接口除了迴環即使是在同一臺機器上的節點的應用程序。

另一種方式來處理所有這將是對TCP/IP級過濾數據包,但它更容易綁定到特定的接口擺在首位。