我有配置:
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;
}