2017-05-09 107 views
0

即时通讯构建一个MEAN栈应用程序,我发现让Nginx服务静态文件(目前我的节点正在服务静态文件)并使用反向代理是一种最佳实践。所以我能够在Nginx上提供静态文件和反向代理,我的问题是,有没有办法保护对静态文件的访问?Nginx安全服务静态文件

这是我的Nginx的代码

server { 
    listen 80; 


    location /static { 
    alias /var/www/project/public; 
    autoindex off; 
} 

    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 

在公用文件夹,我有style.css中 所以,当我去到url localhost/static/style.css,我可以看到我的代码,所以我想可以说,我部署了我网站向公众,并有它的域名,用户可以访问我的静态文件,只要去www.domainname.com/static/style.css 这是正常的?或者有一种方法可以限制对NodeJS服务器的访问?是唯一可以访问静态文件的东西?或者我得到这个错误。

谢谢!对不起,我是这个网络开发世界的新手,但是我正在学习。

回答

1

可以使用nginx的通过添加以下到您的位置定义限制访问:

#This would be the IP of the server you want to have access to your protected file 
allow 123.123.123.123/32; 
deny all; 

但在这种情况下,你不希望限制访问您的静态文件。加载网页的用户需要访问css文件才能正确显示它。如果您要在加载网页时观察网络流量,您会发现浏览器会下载所有需要正常运行的客户端CSS,JS和HTML文件。所以人们只能查看静态托管的CSS文件是完全正常的。通常,后端NodeJS服务器对CSS文件没有用处。

+0

谢谢先生!我担心的是,由于我构建了一个angularjs应用程序,我还需要静态地为我的控制器,服务,指令和我的主要app.js(我的.config和模块定义的位置)服务,如果用户将检查此文件。 – John

+1

任何你放在客户端的JavaScript都可以被用户使用你的网站查看。虽然有一些工具可以“构建”javascript,它会将其混淆并将它们全部推送到单个JS文件中,因此不容易看到JS文件中正在做什么,但仍不能保证键/您可能会在您的应用程序中使用的凭据。任何敏感的证书都应该只用于客户端不可用的服务器端代码。 –

+0

感谢您的有用信息! – John