![这个 nginx 配置(error_page) 有什么问题?](https://linux22.com/image/673438/%E8%BF%99%E4%B8%AA%20nginx%20%E9%85%8D%E7%BD%AE(error_page)%20%E6%9C%89%E4%BB%80%E4%B9%88%E9%97%AE%E9%A2%98%EF%BC%9F.png)
我有配置:
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;
}