Nginx与php-fpm出现403禁止访问错误

3
我将尝试在CentOS上安装WordPress,并使用nginx、php-fpm和MySQL。安装了nginx和WordPress后,访问任何路径都会出现403禁止错误。以下是nginx配置:
user  nginx nginx;
worker_processes  1;

error_log  logs/error.log;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    gzip  on;

    server {
        listen       80;
        server_name  example.com;
        root /home/wordpress;

        location / {
            try_files $uri $uri/ /index.php?q=$uri&$args;
        }

        location ~ \.php$ {
            include fastcgi.conf;
            fastcgi_index index.php;
            fastcgi_pass 127.0.0.1:9000;
        }
    }
}

以及 fastcgi.conf

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

我的根路径是 /home/wordpress

namei -om /home/wordpress 的结果是:

f: /home/wordpress/
 dr-xr-xr-x root  root  /
 drwxr-xr-x root  root  home
 drwxrwxrwx nginx nginx wordpress

我发现如果将location /更改为以下配置,添加index,则可以实现:
    location / {
            index index.php;
            try_files $uri $uri/ /index.php?q=$uri&$args;
    }

我可以访问example.com并获得正确的内容。
其他任何内容都是403禁止访问。

1个回答

0

检查 nginx 错误日志,你会发现类似这样的内容:

 *472430 directory index of "/home/wordpress" is forbidden

你应该将 index 的声明移动到 server 块中:

server {
   root /home/wordpress;
   index index.php;
} 

此外,请确保将 cgi.fix_pathinfo 设置为 0。例如,通过执行以下命令:
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" php.ini

您可以使用 php --ini 命令找到您的 ini 文件。

重启 php-fpm,您的网站应该正常加载。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接