Это довольно интересно, ребята! У меня есть следующий код в конфигурации NginX одного из моих веб-приложений:
location /login {
#access_log off;
proxy_pass https://public;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-SSL-Client-Verify $ssl_client_verify;
proxy_set_header X-Client-S-DN $ssl_client_s_dn;
allow 10.0.0.31;
deny all;
}
Как видите, я хочу запретить все подключения к интерфейсу входа в систему, кроме одного IP-адреса. Это работает как шарм и показывает стандартное сообщение об ошибке NginX 403, когда я пытаюсь подключиться с другого IP-адреса. А теперь самое интересное. Если я добавлю настраиваемую строку сообщения об ошибке, ВСЕ ВАРИАНТЫ РАЗРЕШЕНИЯ / ОТКЛОНЕНИЯ ИГНОРИРУЮТСЯ!
Я добавил:
error_page 403 /40x.html;
OFC Я создал специальный файл для /usr/shar/nginx/html
и файл существует. В NginX нет сообщения об ошибке, но если я добавлю верхнюю строку в конфигурацию веб-приложения (или в стандартный nginx.conf, не имеет значения) правила, которые я установил для разрешенных IP-адресов и deny all
полностью игнорируется. Что дает? Кто-нибудь знает, как предоставить пользователям настраиваемую страницу ошибок NginX и сохранить параметры разрешения и запрета?
Хорошо, решение заключалось в том, чтобы создать не только настраиваемую страницу с ошибкой, но и местоположение страницы с ошибкой. Так что мне просто пришлось добавить:
error_page 403 /40x.html;
location = /40x.html {
root /usr/share/nginx/html;
allow all;
}
И вуаль ... Блин, NginX! Почему ты так много раз меня разочаровываешь? : D