Re: Не срабатывает realip в блоке if

Alexander Moskalenko alexander.moskalenko на gmail.com
Пн Июн 19 14:00:59 UTC 2017


Раз уж зашел разговор о realip....

Максим, а возможно ли указать 2 заголовка realip_header ?

2017-06-19 14:15 GMT+02:00 Maxim Dounin <mdounin at mdounin.ru>:

> Hello!
>
> On Sun, Jun 18, 2017 at 07:31:05AM +0300, Иван wrote:
>
> > Здравствуйте!
> >
> > В конструкции
> >
> > location /login/
> >       set_real_ip_from proxy_IP;
> >       if ($block_agent) {
> >               return 403;
> >     }
> > }
> >
> > Всё, что попадает в блок if ($block_agent == 1), в логи пишется с
> $remote_addr
> > проксирующего сервера (proxy_IP), то есть set_real_ip_from не
> отрабатывает.
> > set_real_ip_from поместить в блок include nginx не дает. Пока что решил
> > проблему меняя формат логов для в блоке if, но что это, баг\фича? И
> можно ли
> > исправить?
>
> Это фича.  Если директива set_real_ip_from задана на уровне
> location, то замена адреса происходит после выбора конфигурации, в
> котором будет обрабатываться запрос, перед работой модулей контроля
> доступа.  А в конфигурации выше - ошибка возвращается с помощью
> директив модуля rewrite, на этапе "выбора конфигурации по
> условию" (см. http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html).
> В результате ошибка 403 случается до того, как адрес клиента
> заменён модулем realip, и в логи попадает исходный ip.
>
> Чтобы подобных сюрпризов не было - правильнее всего задать
> set_real_ip_from на уровне server, тогда замена ip-адреса клиента
> будет происходить сразу после чтения запроса.
>
> --
> Maxim Dounin
> http://nginx.org/
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20170619/ede1e890/attachment.html>


Подробная информация о списке рассылки nginx-ru