14

我已经在 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;
    }

}

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

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"
4

6 回答 6

26

有同样的问题。通过简单地对我的 CSS 和 JS 文件和文件夹设置正确的权限来修复它。设置权限时要小心!但是要让文件在网络上可读,它必须能够被运行服务器进程的用户读取。

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

授予读取和执行权限。-R用于递归。仅对您希望全世界可读的文件执行此操作!

于 2013-12-13T04:27:20.267 回答
7

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

user myuser mygroup;
于 2014-08-05T02:31:38.967 回答
2

在您的位置行中尝试此操作:

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

或者

location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|html)$ {
于 2010-10-14T14:07:56.030 回答
-1

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

于 2012-08-19T22:32:38.163 回答
-1

我需要为这个问题编写替代解决方案。我将 wordpress 迁移到 plesk 服务器,但我在 css 和 js 脚本中遇到了这个错误。Nginx 配置产生获取 js 和 css 文件的错误。如果加载 CSS 和 JS 脚本时出现 wordpress 错误(禁止),可能是由于 nginx 和 apache 的配置。

解锁配置nginx和apache的框:

静态文件的智能处理 -> DONT CHECKED

这解决了我的问题。我希望其他人也如此 pymessoft.com

于 2018-01-04T00:58:44.527 回答
-2
    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。

于 2010-10-15T16:25:41.007 回答