enterdv
@enterdv

Nginx frontend rewrite. Почему ERR_TOO_MANY_REDIRECTS?

Здравствуйте!

Суть в следующем. Nginx выступает в качестве фронтенда. Задача: некоторых клиентов по IP-адресам не из списка перенаправлять на отдельную страницу. Конфиг вроде настроил, но браузер не открывает страницу а пишет ошибку - ERR_TOO_MANY_REDIRECTS.

Подскажите, пожалуйста, как исправить?
Конфигурация nginx:

server {
        listen 80;
        server_name domainname.ru;
        server_name www.domainname.ru;

        if ($remote_addr != *.*.*.*) {
        rewrite ^ http://domainname.ru/temp.html;
        }

        access_log  /var/log/nginx/access.log;
        error_log   /var/log/nginx/error.log;

        proxy_connect_timeout       600;
        proxy_send_timeout          600;
        proxy_read_timeout          600;
        send_timeout                600;

        proxy_buffers 16 64k;
        proxy_buffer_size 128k;

location / {
        proxy_pass http://172.17.22.1;

        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;

        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto https;


    }

}
~
  • Вопрос задан
  • 373 просмотра
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Для запретов доступа по IP есть модуль access и директивы allow/deny.

server {
  listen 80;
  server_name domainname.ru;
  server_name www.domainname.ru;

  # прочие настройки

  location / {
    # разрешаем доступ с определённых IP и подсетей
    allow 192.168.1.0/24; # подсеть 192.168.1.0–192.168.1.255
    allow 2.2.3.3;        # конкретный IP адрес
    deny all;             # всем остальным запретить
    # всем кому запретили покажем страницу /temp.html
    error_page 403 /temp.html;

    proxy_pass http://172.17.22.1;
    # ... прочие proxy_...
  }

  location /temp.html {
    # тут в общем-то ничего не нужно
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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