Возвратите пользовательские 403 ошибочных страницы с nginx

Я пытаюсь отобразить ошибочную страницу в /temp/www/error403.html каждый раз, когда 403 ошибки происходят.

Это должно быть то, каждый раз, когда пользователь пытается получить доступ к сайту через https (ssl), и это - IP, находится в blovkips.conf файле, но в данный момент он все еще показывает ошибочную страницу nginx по умолчанию. У меня есть тот же код для моего другого сервера (без любого блокирования), и это работает.

Это блокирует IP от доступа к пользовательским 403 страницам? Раз так, как я заставляю это работать?

server  {
    # ssl
    listen               443;
    ssl                  on;
    ssl_certificate      /etc/nginx/ssl/site.in.crt;
    ssl_certificate_key  /etc/nginx/ssl/site.in.key;
    keepalive_timeout    70;

    server_name localhost;


    location / {
            root   /temp/www;
            index  index.html index.htm;
}

# redirect server error pages to the static page
error_page   403  /error403.html;
# location = /error403.html {
#         root   /temp/www;
# }

    # add trailing slash if missing
    if (-f $document_root/$host$uri) {
            rewrite ^(.*[^/])$ $1/ permanent;
    }      

    # list of IPs to block
    include blockips.conf;
}

Править: Исправленные error_page кодируют от 504 до 403, но у меня все еще есть та же проблема

8
задан Mint 1 July 2010 в 11:41
поделиться

3 ответа

Я много гуглил перед тем, как приехать сюда, но сделал еще кое-что прямо сейчас, через 5 минут я получил свой ответ: P

Похоже, я не единственный человек, у которого есть эта проблема:

error_page 403 /e403.html;
  location = /e403.html {
  root   html;
  allow all;
}

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

Похоже, я был прав, думая, что доступ к моей странице с ошибкой блокируется .

6
ответ дан 5 December 2019 в 20:13
поделиться

Похоже, что в указанной конфигурации есть ошибка, поскольку она отправляет только код ошибки 503 («служба недоступна») на настраиваемую страницу, поэтому для 403 («запрещено») вы, вероятно, захотите использовать:

error_page 403 /error403.html
0
ответ дан 5 December 2019 в 20:13
поделиться

Проблема может заключаться в том, что вы пытаетесь передать ошибку 403 «Запрещено» с веб-сервера, доступ к которому им запрещен. Nginx рассматривает директиву error_page как внутреннее перенаправление. Таким образом, он пытается подключиться к серверу https://example.com/error403.html , что также запрещено.

Таким образом, вам нужно сделать так, чтобы страница с ошибкой не обслуживалась по протоколу https следующим образом:

error_page  403   http://example.com/error403.html

или добавить необходимые параметры «доступ разрешен» в место для пути к странице с ошибкой. Способ проверить это - получить прямой доступ к странице /error403.html. Если вы не можете получить доступ таким образом, это не сработает, когда кто-то получит фактическую ошибку 403.

2
ответ дан 5 December 2019 в 20:13
поделиться
Другие вопросы по тегам:

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