Как я могу изменить код состояния, включая настраиваемую страницу ошибки

Я меняю код состояния с 403 на 404. Я просто не хочу, чтобы пользователь знал, что существует закрытая страница. Это отлично работает со следующей конфигурацией:

error_page 403 =404 @404;   

location @404 {
    return 404;
}

Теперь я хотел бы вернуть настраиваемую страницу с ошибкой 404. Но код состояния, отправляемый пользователю, всегда должен быть 404 (когда происходит 403). Как я могу заставить работать оба?

Редактировать:

Я на что-то надеялся. вроде бы это сработает, но это не так.

location @404 {
    root /usr/share/nginx/html;
    internal;
    return 404 "/custom_404.html";
}
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
1
0
2 543
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это:

error_page 404 /404.html;
location = /404.html {
        root /var/www/error/;
        internal;
}

Не работает. Nginx игнорирует это из-за оператора return.

Maas 30.03.2018 06:02
Ответ принят как подходящий

Проблема заключалась в заявлении deny. Этот оператор блокирует все, включая доступ к любой настраиваемой странице ошибок. Решение состоит в том, чтобы добавить allow all в настраиваемый блок страницы ошибок, чтобы отменить унаследованный отказ.

error_page 403 404 =404 /custom_404.html;

location = /custom_404.html {
    allow all;
    root /usr/share/nginx/html;
    internal;
}

первоисточник:

https://www.cyberciti.biz/faq/unix-linux-nginx-custom-error-403-page-configuration/

Другие вопросы по теме