Nginx custom error_page с php - PullRequest
       7

Nginx custom error_page с php

0 голосов
/ 22 октября 2019

Я новичок в nginx и для его тестирования я перехожу с Apache, и все, что мне осталось, - это настроить пользовательские страницы ошибок.

Эти страницы являются файлами php (для многоязычных целей), Я пробовал многие методы из StackOverflow, но не могу понять, как это сделать.

Некоторые из них:

До сих пор я создал файл /etc/nginx/common/default-error-pages.conf, чтобы включить его в vhosts. Этот файл содержит:

error_page 400 /error/400.php;
error_page 401 /error/401.php;
error_page 403 /error/403.php;
error_page 404 /error/404.php;

error_page 500 /error/500.php;
error_page 503 /error/503.php;

location /error/ {
    alias /var/www/error/;
    autoindex on;
}

location ~ \.php$ {
    root /var/www/error/;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;

    # fastcgi_intercept_errors on;
}

Файлы php находятся в /var/www/error, если я включаю автоиндекс, я могу просматривать их в браузере все файлы, но если я нажимаю на любой из них по умолчаниюОтображается страница 404.

Я создал символическую ссылку одного из этих файлов на сайт тестирования, и он корректно исполняется даже при загрузке CSS, как и ожидалось.

Я пытался вложить местоположенияи включая этот файл конфигурации в верхней части блока server сайта.

Если я изменю расширение файлов ошибок php на html, они будут правильно обслуживаться.

Сайт nginx аналогиченна это (упрощенный файл):

server {
        listen 4430 ssl http2 default_server;
        listen [::]:4430 ssl http2 default_server;
        server_name test.local;

        root /var/www/html;
        index index.php index.html;
        # execute php files "helper"
        include common/php-files.conf;
        fastcgi_hide_header X-Powered-By;
        include common/default-error-pages.conf;

        location / {
                # autoindex on;
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
}

Как предполагается настроить? Я столько раз менял его, что даже не знаю, что еще попробовать.

В файлах журналов Nginx не выявляется никаких неожиданных ошибок / настроек.

Заранее спасибо

1 Ответ

0 голосов
/ 23 октября 2019

Я ошибся root, как сказал Ричард Смит в комментарии под постом.

После изменения на предложенное все работало безупречно.

Я также вложил блоки location, чтобы файлы php обрабатывались правильно, поскольку другие обрабатываются с помощью fastcgi_intercept_errors on; для обнаружения ошибок http.

Таким образом, конфигурация остается такой:

error_page 403 /error/403.php;
error_page 404 /error/404.php;

error_page 500 /error/500.php;
error_page 503 /error/503.php;

location /error/ {
    root /var/www/;
    try_files $uri $uri/ =404;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_intercept_errors off;
    }
}
...