403禁止使用nginx的wordpress索引,其余页面工作正常

Posted

技术标签:

【中文标题】403禁止使用nginx的wordpress索引,其余页面工作正常【英文标题】:403 forbidden on wordpress index with nginx, the rest of the pages work fine 【发布时间】:2013-08-09 07:33:24 【问题描述】:

我正在一个新的 EC2 实例上设置我的博客,因为当前托管它的服务器上的一个站点正在被 DDoSed。 我在使用 nginx 时遇到了一些问题,因为我可以看到所有页面都很好,但索引上的 403,或者看到索引但页面上的 404(取决于我使用的配置)

这是我的 nginx 配置:

server 
    listen       80;

    server_name  www.test.com;
    server_name  test.com;
    root /www/blog;

    include conf.d/wordpress/simple.conf;

还有 simple.conf:

location = /favicon.ico 
            log_not_found off;
            access_log off;
    

    location = /robots.txt 
            allow all;
            log_not_found off;
            access_log off;
    

    location / 
            # This is cool because no php is touched for static content. 
            # include the "?$args" part so non-default permalinks doesn't break when using query string
            try_files $uri $uri/ /index.php?$args;
    

    location ~ \.php$ 
            #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
            include fastcgi.conf;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ 
            expires max;
            log_not_found off;
    

如果我更改 try_files $uri $uri/ /index.php?$args;索引 index.php,首页会正常工作,其余的将是 404。如果我这样离开,首页是 403。

这是错误日志:

2013/08/07 19:19:41 [error] 25333#0: *1 directory index of "/www/blog/" is forbidden, client: 64.129.X.X, server: test.com, request: "GET / HTTP/1.1", host: "www.test.com"

那个目录在 nginx 用户上是 755:

drwxr-xr-x 6 nginx nginx  4096 Aug  7 18:42 blog

有什么明显的我做错了吗?

谢谢!

【问题讨论】:

【参考方案1】:

在服务器块中添加index index.php;,如果它不起作用,那么你需要删除$uri/,因为你不想做autoindex on


编辑:刚刚注意到你已经发现了你的问题,所以我将添加它背后的原因,你需要autoindex on; 的原因是因为没有它,nginx 将遵循try_files 规则,
    检查是否有一个名为/的文件,当然失败了。 检查是否有一个名为/的目录(通过添加root它会=/www/blog/),这个检查会成功,所以它会尝试列出文件夹的内容。 由于你没有指定autoindex on;,所以默认情况下nginx应该禁止列出目录,因此它会返回一个403禁止错误。 该站点的其余部分工作正常,因为它未通过$uri/ 测试或无法访问它,因为您可能没有名为image.jpgstylesheet.css 等的文件夹。

【讨论】:

【参考方案2】:

看起来我需要在服务器 定义中而不是在位置 中的 inded index.php

【讨论】:

大声笑,我回答后才意识到你已经回答了,没注意到,我想我会编辑我的答案来解释原因。【参考方案3】:

您似乎不允许将参数发送到 CMS,因此这不会显示此 uri,该 uri 会从数据库中获取信息并将您重定向到 403 页面。

【讨论】:

不确定你的意思,我通过 ?$args 发送参数?

以上是关于403禁止使用nginx的wordpress索引,其余页面工作正常的主要内容,如果未能解决你的问题,请参考以下文章

Debian 7下禁止nginx 403

如何解决wordpress中的403禁止错误?

Wordpress 403 禁止“您无权访问此服务器上的 /。”

Nginx 403 禁止使用 pimcore

403 禁止 - Nginx - 使用正确的凭据

启用永久链接后,Wordpress 在 wamp apache 上抛出 403 禁止错误?