这个 nginx 配置(error_page) 有什么问题?

这个 nginx 配置(error_page) 有什么问题?

我有配置:

server {
        server_name "mysite.ru";
        root "/var/www/mysite/";

        ###
        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
       }



        #Errors
        error_page 400 /errors/index.php?400;
        error_page 403 /errors/index.php?403;
        error_page 404 /errors/index.php?404;
        error_page 500 /errors/index.php?500;

        location = /errors/ {
                root "/var/www/common";
                internal;
        }

}

但它仍然显示默认的 nginx 404 错误页面。

答案1

在我看来,您正在尝试从不同的根目录执行 php 脚本。您的精确匹配位置将仅匹配 URI/errors/而不匹配/errors/index.php。但是,即使它确实匹配 URI,它也无法在该位置执行 PHP 脚本。

您需要fastcgi在预期执行 PHP 脚本的任何位置复制指令。例如:

location = /errors/index.php {
    root "/var/www/common";
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    internal;
}

相关内容