禁用使用快速节点服务器访问文件

时间:2017-02-12 04:45:12

标签: node.js apache express

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

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

我设置了一个apache代理来查看网站

<VirtualHost *:80>
  ServerAdmin me@xxx.net
  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运行一个快速节点服务器。我尝试了各种各样的chmod'ing但没有改变。如果有人能够解决我的问题,那就太好了。如果您需要更多信息,请告诉我,谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用express js限制访问。

撰写时

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

这意味着访问任何内容

您只能使用

限制对某些文件夹的访问权限

app.use('/',express.static(__ dirname +'/ public'));

或者您可以在express中编写可以包含要阻止的文件路由列表的中间件

    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;
       })
    }