Назад | Перейти на главную страницу

Что не так с этой конфигурацией 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;
        }

}

Но он все еще показывает страницу ошибки 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;
}