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

Maxim Dounin mdounin на mdounin.ru
Пн Июн 19 15:42:25 UTC 2017


Hello!

On Mon, Jun 19, 2017 at 05:17:18PM +0200, Alexander Moskalenko wrote:

> 2017-06-19 17:00 GMT+02:00 Evgeniy Berdnikov <bgx at protva.ru>:
> 
> > On Mon, Jun 19, 2017 at 04:26:59PM +0200, Alexander Moskalenko wrote:
> > > Кейс такой:
> > >
> > > Есть 2 CDN, которые передают разные заголовки.
> > > Есть список их IP, хочется получать Real_IP от обоих без танцев
> >
> >  Что значит "обоих"? Вложенные CDN, что ли? Как это? Непонятно.
> >
> 
> 2 _разных_ CDN, часть сайтов висит на одном, часть на другом
> Конфигурация realip модуля вынесена в блок http
> CDN_1 шлет IP клиента в HTTP_HEADER_1
> CDN_2 шлет IP клиента в HTTP_HEADER_2
> 
> хочется прописать ОБА заголовка в realip_header

Это приведёт к тому, что любой клиент сможет подделать IP, прислав 
запрос через CDN_1 с заголовком HTTP_HEADER_2 (или наоборот - 
через CDN_2 с заголовком HTTP_HEADER_1).  Потому что CDN'ы 
наверняка не фильтрует заголовки, которые сами не выставляют.

Чтобы работало хоть сколько-нибудь безопасно - нужно, фактически, 
делать отдельные конфигурации, с каких адресов принимать какой 
заголовок.  Такого realip-модуль сейчас не умеет, и в обозримой 
перспективе уметь, скорее всего, не будет.

Проще всего для подобных задач явно делать разные конфигурации, с 
разными блоками server{} для разных CDN.

-- 
Maxim Dounin
http://nginx.org/


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