2017-02-12 68 views
2

我有一个运行在CentOS上的节点服务器,目前您只需转到根目录中的任何文件并查看它即可,例如xxx.net/whatever.js。这显然不是很好,因为我在某些文件中有一些敏感信息。禁止使用快递节点服务器访问文件

如何禁用用户从浏览器浏览到这些文件?

我已经设置了查看网站,像这样

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName www.xxx.net 
    ServerAlias xxx.net 

    DocumentRoot /var/www/xxx.net 
    <Directory /var/www/xxx.net> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
    </Directory> 

    ErrorLog /var/www/xxx.net/error.log 
    CustomLog /var/www/xxx.net/requests.log combined 

    ProxyRequests Off 
    ProxyPreserveHost On 
    ProxyVia Full 
    <Proxy *> 
    Require all granted 
    </Proxy> 

    <Location /> 
    ProxyPass http://127.0.0.1:4000/ 
    ProxyPassReverse http://127.0.0.1:4000/ 
    </Location> 
</VirtualHost> 

然后PM2运行的快速结点服务器Apache代理。我尝试了各种各样的chmod'ing,但没有任何改变。如果有人能够解释我的问题,那将是非常好的。如果您需要更多信息,请告诉我,谢谢!

回答

2

您可以使用express js限制访问。当这样写

app.use('/', express.static(__dirname)); 

这意味着任何访问

可以限制这种访问某些文件夹,只能用

app.use

( '/',express.static(__目录名+'/ public'));

或者你可以写在快递中间件可以有你想要阻止

app.use(function (req, res, next) { 
     if(!checkFunction(req.url)) { 
      next(); 
     } else { 
      res.send(404, "Not found"); 
     } 
    }) 

    var checkFunction(url){ 
     var blockedUrl = ['folder/file1.js']; 

     return blockedUrl.find(function(urlCheck){ 
      return urlCheck === url; 
     }) 
    } 
+0

文件路由列表我肯定已经使用前公用文件夹版本......这一次我打算只产生作为html网站,但最后一分钟决定离开它动态...所以我没有使用酒吧。但我一定会尝试'checkFunction'技术!非常感谢这些例子。 –