@E_gorka
Сисадмин

Nginx, как не отдавать error_page отделу разработки?

Чтобы пользователи видели красивые сообщения об ошибках, настроен nginx :
error_page 404 /var/www/page404.html;
Сейчас возникла задача отдавать эту страницу только пользователям, а отделу разработки видеть какую реальную ошибку выдал сервер.
Начал ваять такой код,
geo $it_networks
{
default no;
192.168.5.0/24 yes;
}
server {
        listen       80;
...
if ($it_networks = no) {
error_page 404 /var/www/page404.html;
}

но наткнулся на ошибку.
"error_page" directive is not allowed here in /etc/nginx/sites-enabled/superpupersite.cfg


Можно вынести error_page в отдельный location, но тогда не понятно как в него перенаправлять.
if ($it_networks = no) {
   return @errors; # не работает
}
location @errors {
   error_page 404 /var/www/page404.html;
}

Прошу совета.
  • Вопрос задан
  • 322 просмотра
Решения вопроса 1
@E_gorka Автор вопроса
Сисадмин
Сам вопрос задал, сам на него и отвечу.
error_page 404 /page404.html;
location = /page404.html {
deny 192.168.5.0/24;
allow all;
root /var/www;
}

и не нужен модуль geo.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dima9595
@dima9595
Junior PHP
Есть тут один вариантик, который будет зависеть не от web-сервера, а от самого приложения. Допустим, ваше приложение работает с авторизованными пользователями, то тогда вашему приложению нужно узнать (права, роли, или просто по какому то другому приципу) является ли авторизованный пользователь тем, кому можно показывать системные ошибки (например, администратор). И если имеет право увидеть, то показываем, иначе - нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы