Nginx 403禁止在PHP文件上使用Location指令

时间:2017-03-29 20:44:40

标签: php nginx

这是我的服务器块:

server {
    listen       80;
    server_name  localhost;

    root /www/html;
    index index.php;

    location = / {
        autoindex on;
        index index.php;
        try_files $uri $uri/ =404;
    }

    location ~*\.(css|js|gif|jpe?g|png)$ {
        root /www/html/shared;
        rewrite ^/releases(.*)$ $1 last;
        expires 5m;
    }

    location ~* \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

现在,这样做只会吐出一个禁止的#34; 403禁止"我尝试访问" localhost /"时出错。但是,如果我直接访问页面,那么页面工作得非常好 - " localhost / index.php"。我不能为我的生活找出原因。 error.log也没有给我任何有用的信息或错误代码 - 只是页面是"禁止"。 这是抛出的错误:

2017/03/29 14:37:35 [error] 11980#8840: *94 directory index of "C:/www/html/" is forbidden, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost"

这是基于Windows的 nginx服务器。

1 个答案:

答案 0 :(得分:0)

答案发现有点令人失望,但我会回答它,所以如果有人遇到这个愚蠢的问题,他们可以解决它。

php正在寻找带有前缀“/ www / html”,而不是“/ www / html /”的文件,因此当它想要我的索引它试图加载“/www/htmlindex.php”而不是“/www/html/index.php”。

您可以通过执行任何操作来解决此问题

 fastcgi_index /index.php;

或在根目录末尾添加/。