Re: unit: механизм определения адреса клиента типа realip и передача заголовков

2018-08-16 Пенетрантность Валентин Бартенев
On Thursday 16 August 2018 16:13:39 Иван wrote:
> Здравствуйте!
> 
> Кажется, до этого я отправил личное письмо. Исправляю и отвечаю в рассылку.
> 
> 09.08.2018 10:37, Валентин Бартенев пишет:
> 
> > On Wednesday, 8 August 2018 22:53:41 MSK Иван wrote:
> >> Здравствуйте!
> >>
> >> Правильно ли я понимаю, что сейчас unit не умеет передавать в
> >> $_SERVER['REMOTE_ADDR']   ip клиента, а не проксирующего nginx?
> >> Переделывать весь наш код, чтоб брал IP из другого заголовка будет жестко.
> > Да, туда в настоящий момент передается информация из сокета.
> >
> > Я бы сейчас решил эту задачу маленькой прослойкой в виде небольшого php
> > скрипта, который заменяет содержимое $_SERVER['REMOTE_ADDR'] из HTTP_
> > заголовка, а далее выполняет уже основной скрипт, запрошенный.  Так не
> > потребуется вносить каких-либо изменений в остальной код, а прослойку
> > в бущуем можно будет просто убрать.
> 
> Пока что держимся на php-fpm. У нас много мелких микросервисов, везде
> внедрять эту прослойку - руководство не поймет.
> 

Проблема понятна, пока что скорого решения нет.


> >> Планируется ли это исправить? Когда примерно? Сейчас это единственный
> >> для меня блокирующий недостаток для внедрения unit массово в продакшен.
> > Насколько я понимаю, некое подобие realip модуля решило бы Вашу задачу?
> >
> Конкретно с адресом бы решило. Но это необходимо, но совсем не
> достаточно. Например, совершенно точно будет нехватать возможности
> задать $_server[script_(file)name]. Очень многие продукты используют
> ЧПУ, соотвественно без задания script_(file)name веб-сервером не
> обойтись. PATH_INFO туда же.
> 
> Или даже не ЧПУ, у на видеостриминговый сервис. Мы отадаём плейлсты (*.m3u8) 
> через пыху (x-accell-redirect). Как это реализовать, не задавая 
> SCRIPT_FILENAME?

У PHP приложений есть опция "script", которая и задает SCRIPT_FILENAME.
С WordPress и его ЧПУ прекрасно работает уже сейчас.


>  
> 
> >> Так же интересно, когда планируется ввести возможность передавать вы
> >> пыху любые заголовки массива $_SERVER, а не только HTTP_*. Это
> >> собственно является решением и предыдущего вопроса.
> > Сейчас это не очень простая задача.  Сама по себе возможность задавать
> > массив $_SERVER не представляет сложности, но вряд ли будет полезно
> > указывать там какие-то константы.  А что-то более осмысленное требует
> > уже реализовывать поддержку переменных или какой-то похожий механизм.
> > Возможно где-то к концу года, в начале следующего мы что-то подобное
> > сделаем.
> >
> Пока что, похоже, без этого unit в прод не зайдет. Может можно "на
> скорую руку" переменные вида
> $_SERVER['HTTP_UNIT_VARNAME'] передавать в $_SERVER['VARNAME'] для PHP?
> Это бы решило вопрос.

Кто угодно может послать какие угодно заголовки, так что это будет просто
небезопасно.  Предполагается, что значения в $_SERVER, которые начинаются
не с префикса "HTTP_", пришли не напрямую от клиента и более менее безопасны.

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: unit: механизм определения адреса клиента типа realip и передача заголовков

2018-08-16 Пенетрантность Иван
Здравствуйте!

Кажется, до этого я отправил личное письмо. Исправляю и отвечаю в рассылку.

09.08.2018 10:37, Валентин Бартенев пишет:

> On Wednesday, 8 August 2018 22:53:41 MSK Иван wrote:
>> Здравствуйте!
>>
>> Правильно ли я понимаю, что сейчас unit не умеет передавать в
>> $_SERVER['REMOTE_ADDR']   ip клиента, а не проксирующего nginx?
>> Переделывать весь наш код, чтоб брал IP из другого заголовка будет жестко.
> Да, туда в настоящий момент передается информация из сокета.
>
> Я бы сейчас решил эту задачу маленькой прослойкой в виде небольшого php
> скрипта, который заменяет содержимое $_SERVER['REMOTE_ADDR'] из HTTP_
> заголовка, а далее выполняет уже основной скрипт, запрошенный.  Так не
> потребуется вносить каких-либо изменений в остальной код, а прослойку
> в бущуем можно будет просто убрать.

Пока что держимся на php-fpm. У нас много мелких микросервисов, везде
внедрять эту прослойку - руководство не поймет.

>> Планируется ли это исправить? Когда примерно? Сейчас это единственный
>> для меня блокирующий недостаток для внедрения unit массово в продакшен.
> Насколько я понимаю, некое подобие realip модуля решило бы Вашу задачу?
>
Конкретно с адресом бы решило. Но это необходимо, но совсем не
достаточно. Например, совершенно точно будет нехватать возможности
задать $_server[script_(file)name]. Очень многие продукты используют
ЧПУ, соотвественно без задания script_(file)name веб-сервером не
обойтись. PATH_INFO туда же.

Или даже не ЧПУ, у на видеостриминговый сервис. Мы отадаём плейлсты (*.m3u8) 
через пыху (x-accell-redirect). Как это реализовать, не задавая SCRIPT_FILENAME?
 

>> Так же интересно, когда планируется ввести возможность передавать вы
>> пыху любые заголовки массива $_SERVER, а не только HTTP_*. Это
>> собственно является решением и предыдущего вопроса.
> Сейчас это не очень простая задача.  Сама по себе возможность задавать
> массив $_SERVER не представляет сложности, но вряд ли будет полезно
> указывать там какие-то константы.  А что-то более осмысленное требует
> уже реализовывать поддержку переменных или какой-то похожий механизм.
> Возможно где-то к концу года, в начале следующего мы что-то подобное
> сделаем.
>
Пока что, похоже, без этого unit в прод не зайдет. Может можно "на
скорую руку" переменные вида
$_SERVER['HTTP_UNIT_VARNAME'] передавать в $_SERVER['VARNAME'] для PHP?
Это бы решило вопрос.

С уважением, Иван.

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: limit req zone для одного server

2018-08-16 Пенетрантность Dmytro Lavryk
И тут же сам кажется понял:
limit_req_zone $binary_remote_addr$server_name zone=

составной ключик нам поможет. Сорри за беспокойство.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,280893,280894#msg-280894

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

limit req zone для одного server

2018-08-16 Пенетрантность Dmytro Lavryk
Может я просто логику как-то не понимаю?
На машине много сайтов. limit_req_zone прописываем только в http - в итоге
когда ввожу ограничения - под них попадают те. кто выбирает их по ВСЕМ
сайтам, а мне бы нужно только вот для конкретного.

Надеюсь понятно описал...

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,280893,280893#msg-280893

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru