我在端口3000
上获得了node.js express
站点。 它被configuration为使用nginx。 它通过nginx运行良好,直到我决定configurationnginx直接从公用文件夹获取css,js和图像文件没有node.js express:
/etc/nginx/sites-enabled# cat myDomain.com.public server { listen 80; server_name myDomain.com; access_log /var/log/nginx/myDomain.com.access.log; location / { proxy_pass http://127.0.0.1:3000/; } location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) { root /root/pathToNodeJsExpressSiteFolder/public; access_log off; expires max; } }
但是现在这个网站没有css和js。 它返回403 forbidden
请求他们:
style.css /stylesheets GET 403 Forbidden
我做错了什么?
对于nginx文件系统上的那些静态资源,它需要对该目录和该目录的所有父目录具有读取权限和执行权限。 如果你在你的nginx错误日志中找到了一些条目,如:
open() "/root/pathToNodeJsExpressSiteFolder/public/stylesheets/style.css" failed (13: Permission denied)
那么你需要:
$ sudo chmod +rx /root/pathToNodeJsExpressSiteFolder/public $ sudo chmod +rx /root/pathToNodeJsExpressSiteFolder $ sudo chmod +rx /root
注意 :不建议使用$ sudo chmod +rx /root
因为它总是限制非root用户访问/root
。
403 forbidden
响应可能与nginx进程没有权限读取文件有关。 检查运行nginx
的用户是否可以递归读取文件夹public
,并根据需要更改权限:
sudo chmod -R 744 /root/pathToNodeJsExpressSiteFolder/public