Nginx为CSS / JS文件提供了一个403错误

我已经在Ubuntu10.10上安装了nginx 0.7.67以及php-cli。 我试图让我的基于前端控制器的PHP框架运行,但除了index.php以外的所有页面都给出了一个403错误。

例如:

  1. http://mysite.com/styles/style.css – 403禁止
  2. http://mysite.com/scripts/script.css – 403禁止
  3. http://mysite.com/index.php – 工作

我的/ etc / nginx / sites-enabled / default如下

server { listen 80; server_name mysite.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log warn; index index.php index.html; root /full/path/to/public_html; location ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ { expires max; } location ~ index.php { include /etc/nginx/fastcgi_params; keepalive_timeout 0; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } } 

有关如何解决上述问题的任何build议?

PS:这是来自错误日志的条目

 2010/10/14 19:56:15 [error] 3284#0: *1 open() "/full/path/to/public_html/styles/style.css" failed (13: Permission denied), client: 127.0.0.2, server: quickstart.local, request: "GET /styles/style.css HTTP/1.1", host: "mysite" 

有同样的问题。 通过简单地在我的CSS和JS文件和文件夹上设置正确的权限来解决这个问题。 小心设置权限! 但是,要使文件在Web上可读,则必须由运行服务器进程的用户读取。

 chmod -R +rx css chmod -R +rx js 

提供读取和执行权限。 -R是递归的。 只有这样做的文件,你想要世界可读!

尝试在您的位置线:

 location ~* ^.+\.(js|css|png|jpg|jpeg|gif|ico|html)$ { 

要么

 location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|html)$ { 

Alt解决方案:通过编辑nginx.conf(例如,/usr/local/nginx/conf/nginx.conf)来更改运行用户给这些文件的所有者:

 user myuser mygroup; 

确保每个顶级目录都有权限级别和index.html。 大多数情况下,您只需复制要在/ www中查看的文件,并将其重命名为index.html,确保新的index.html具有正确的权限(确保777仅用于测试课程)。

  server { listen 80; server_name mysite.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log warn; index index.php index.html; root /full/path/to/public_html; } <--- you forgot this one location ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ { expires max; } location ~ index.php { include /etc/nginx/fastcgi_params; keepalive_timeout 0; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } } 

您必须在定义位置之前关闭服务器{}

或者如果您无权访问这些文件,请将文件的所有者更改为www-data或apache。