configurationnginx直接从node.js express站点的公共文件夹中获取js和css

我在端口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