У меня конфигурация:
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;
}
}
Но он все еще показывает страницу ошибки 404 nginx по умолчанию.
Мне кажется, что вы пытаетесь выполнить 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;
}