Re: nginx-1.13.7

2017-11-21 Пенетрантность Maxim Dounin
Hello!

On Wed, Nov 22, 2017 at 12:33:59AM +0200, Sargas wrote:

> А можете прокомментировать чуть подробнее про?
> >Исправление: в переменной $upstream_status.

Если в конфигурации было сказано "proxy_next_upstream http_503 
http_504", то в переменной $upstream_status вместо статуса 503 / 
504 отображался статус 502.  Подробнее тут:

http://hg.nginx.org/nginx/rev/882ad033d43c

> >Исправление: в модуле ngx_http_fastcgi_module.

Не сохранялась позиция парсинга заголовков FastCGI records, и если 
вдруг при получении заголовков ответа какой-то record header 
приходил частично (что на практике, судя по всему, не встречается, 
но теоретически возможно) - то парсинг ломался, и возникала 
ошибка.  Подробнее тут:

http://hg.nginx.org/nginx/rev/3b635e8fd499

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

Re: nginx-1.13.7

2017-11-21 Пенетрантность Sargas
А можете прокомментировать чуть подробнее про?
>Исправление: в переменной $upstream_status.
>Исправление: в модуле ngx_http_fastcgi_module.

Благодарю!

21 ноября 2017 г., 19:23 пользователь Maxim Dounin 
написал:

> Hello!
>
> On Tue, Nov 21, 2017 at 12:18:41PM -0500, vitcool wrote:
>
> > Maxim Dounin Wrote:
> > ---
> > > Изменения в nginx 1.13.7
> > > 21.11.2017
> > > *) Исправление: nginx возвращал ошибку 500, если в директиве
> > >xslt_stylesheet были заданы параметры без использования
> > > переменных.
> >
> >
> > Я прошу прощения,  а nginx умеет делать xsl трансформацию?
>
> Да, начиная с 0.7.8.
> Подробнее тут:
>
> http://nginx.org/ru/docs/http/ngx_http_xslt_module.html
>
> --
> Maxim Dounin
> http://mdounin.ru/
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

systemd: PID file /var/run/nginx.pid not readable (yet?) after start.

2017-11-21 Пенетрантность Gena Makhomed

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

nginx установлен из официального репозитория nginx.org, CentOS 7.4

В логах вот такое наблюдается при перезапуске nginx 1.13.6:

systemd: Starting nginx - high performance web server...
nginx: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: nginx: configuration file /etc/nginx/nginx.conf test is successful
systemd: Failed to read PID from file /var/run/nginx.pid: Invalid argument
systemd: Started nginx - high performance web server.

И вот такое при запуске nginx 1.13.7:

systemd: Starting nginx - high performance web server...
systemd: PID file /var/run/nginx.pid not readable (yet?) after start.
systemd: Started nginx - high performance web server.

Как это можно победить, чтобы в логах такого не было?

Рекомендуют вот такой workaround: https://stackoverflow.com/a/42084804
И еще вот такое нашлось заодно: https://stackoverflow.com/a/42555993

Но это наверное неправильно будет, добавлять sleep 0.1 в юнит-файл?

Обе эти ошибки возникают в systemd функции service_load_pid_file()
https://github.com/systemd/systemd/blob/master/src/core/service.c#L815
Когда systemd не может прочитать pid-файл.

Насколько я понял из комментариев в функции service_enter_start()
https://github.com/systemd/systemd/blob/master/src/core/service.c#L1909

/* For forking services we wait until the start
 * process exited. */

И в функции service_sigchld_event():
https://github.com/systemd/systemd/blob/master/src/core/service.c#L2959

/* Forking services may occasionally move to a new PID.
 * As long as they update the PID file before exiting the old
 * PID, they're fine. */

Systemd считает что сервис запустился
после того как start process exited ?

А у nginx получается так, что start process exited,
а pid файл еще не создан и это создает проблемы systemd?

Можно ли как-то исправить поведение nginx,
чтобы systemd не флудил в логи сообщениями об ошибках?

--
Best regards,
 Gena

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

Re: nginx-1.13.7

2017-11-21 Пенетрантность Maxim Dounin
Hello!

On Tue, Nov 21, 2017 at 12:18:41PM -0500, vitcool wrote:

> Maxim Dounin Wrote:
> ---
> > Изменения в nginx 1.13.7 
> > 21.11.2017
> > *) Исправление: nginx возвращал ошибку 500, если в директиве
> >xslt_stylesheet были заданы параметры без использования
> > переменных.
> 
> 
> Я прошу прощения,  а nginx умеет делать xsl трансформацию?

Да, начиная с 0.7.8.
Подробнее тут:

http://nginx.org/ru/docs/http/ngx_http_xslt_module.html

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

Re: nginx-1.13.7

2017-11-21 Пенетрантность vitcool
Maxim Dounin Wrote:
---
> Изменения в nginx 1.13.7 
> 21.11.2017
> *) Исправление: nginx возвращал ошибку 500, если в директиве
>xslt_stylesheet были заданы параметры без использования
> переменных.


Я прошу прощения,  а nginx умеет делать xsl трансформацию?

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

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

Re: gzip filter failed to use preallocated memory

2017-11-21 Пенетрантность S.A.N
> Возможно.  Я отправил его коллегам на review, если возражений не 
> будет - закоммичу.

Спасибо!

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

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

nginx-1.13.7

2017-11-21 Пенетрантность Maxim Dounin
Изменения в nginx 1.13.7  21.11.2017

*) Исправление: в переменной $upstream_status.

*) Исправление: в рабочем процессе мог произойти segmentation fault,
   если бэкенд возвращал ответ "101 Switching Protocols" на подзапрос.

*) Исправление: если при переконфигурации изменялся размер зоны
   разделяемой памяти и переконфигурация завершалась неудачно, то в
   главном процессе происходил segmentation fault.

*) Исправление: в модуле ngx_http_fastcgi_module.

*) Исправление: nginx возвращал ошибку 500, если в директиве
   xslt_stylesheet были заданы параметры без использования переменных.

*) Изменение: при использовании варианта библиотеки zlib от Intel в лог
   писались сообщения "gzip filter failed to use preallocated memory".

*) Исправление: директива worker_shutdown_timeout не работала при
   использовании почтового прокси-сервера и при проксировании
   WebSocket-соединений.


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

Re: Помогите разобраться с proxy pass uri decode

2017-11-21 Пенетрантность Maxim Dounin
Hello!

On Tue, Nov 21, 2017 at 05:11:54AM -0500, bodomic wrote:

> Уже, кажется, все идеи перепробовал, ничего не помогает. 
> Попробую максимально точно описать проблему: На вход фронтенда приходит урл
> с encoded символами, среди которых есть %20. На proxy_pass этот %20
> обращается обратно в пробел и всё ломается.
> В простейшей конфигурации имеем:
> Nginx:
> 
> location ~ ^/api(.*) {
>   proxy_pass http://backend/api.php?q=$1;
> }
> 
> Apache (backend):
> "GET /api.php?q=blabla1 blabla2"...
> 
> 
> Ну и в логе ошибка "/api.php?q=blabla1 не валидный запрос без blabla2".
> Я уже бессчётное количестко подходов сделал к экранированию и переписыванию
> переменных, нужен divine intervention, который скажет, как правильно,
> видимо.

Проблема в том, что location работает с раскодированным URI 
запроса (и соответственно в $1 попадает раскодированная часть 
URI), а proxy_pass с переменными ожидает полностью сформированный 
и правильно закодированный URI, как например в конструкции

proxy_pass http://127.0.0.1$request_uri;

Для задачи "поменять URI запроса на /api.php?q=..." проще всего 
использовать rewrite, благо он умеет правильно кодировать URI при 
его изменении.

Как-то так должно заработать (untested):

location /api/ {
rewrite ^/api(/.*) /api.php?q=$1? break;
proxy_pass http://backend;
}

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

Re: Помогите разобраться с proxy pass uri decode

2017-11-21 Пенетрантность vitcool
bodomic Wrote:
---
> Уже, кажется, все идеи перепробовал, ничего не помогает. 
> Попробую максимально точно описать проблему: На вход фронтенда
> приходит урл с encoded символами, среди которых есть %20. На
> proxy_pass этот %20 обращается обратно в пробел и всё ломается.

в аналогичной ситуации, я устал искать решение и стал передавать через
заголовки, благо был доступ и к фронту и к бекенду
я про proxy_set_header

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

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

Помогите разобраться с proxy pass uri decode

2017-11-21 Пенетрантность bodomic
Уже, кажется, все идеи перепробовал, ничего не помогает. 
Попробую максимально точно описать проблему: На вход фронтенда приходит урл
с encoded символами, среди которых есть %20. На proxy_pass этот %20
обращается обратно в пробел и всё ломается.
В простейшей конфигурации имеем:
Nginx:

location ~ ^/api(.*) {
  proxy_pass http://backend/api.php?q=$1;
}

Apache (backend):
"GET /api.php?q=blabla1 blabla2"...


Ну и в логе ошибка "/api.php?q=blabla1 не валидный запрос без blabla2".
Я уже бессчётное количестко подходов сделал к экранированию и переписыванию
переменных, нужен divine intervention, который скажет, как правильно,
видимо.

nginx version: nginx/1.10.2
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector
--param=ssp-buffer-size=4 -Wformat -Werror=format-security
-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie
-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx
--conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log
--error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock
--pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit
--with-ipv6 --with-http_ssl_module --with-http_stub_status_module
--with-http_realip_module --with-http_auth_request_module
--with-http_addition_module --with-http_dav_module --with-http_flv_module
--with-http_geoip_module --with-http_gunzip_module
--with-http_gzip_static_module --with-http_image_filter_module
--with-http_mp4_module --with-http_perl_module
--with-http_random_index_module --with-http_secure_link_module
--with-http_v2_module --with-http_sub_module --with-http_xslt_module
--with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module
--with-threads
--add-module=/build/nginx-1.10.2/debian/modules/headers-more-nginx-module
--add-module=/build/nginx-1.10.2/debian/modules/nginx-auth-pam
--add-module=/build/nginx-1.10.2/debian/modules/nginx-cache-purge
--add-module=/build/nginx-1.10.2/debian/modules/nginx-dav-ext-module
--add-module=/build/nginx-1.10.2/debian/modules/nginx-development-kit
--add-module=/build/nginx-1.10.2/debian/modules/nginx-echo
--add-module=/build/nginx-1.10.2/debian/modules/ngx-fancyindex
--add-module=/build/nginx-1.10.2/debian/modules/nginx-http-push
--add-module=/build/nginx-1.10.2/debian/modules/nginx-lua
--add-module=/build/nginx-1.10.2/debian/modules/nginx-upload-progress
--add-module=/build/nginx-1.10.2/debian/modules/nginx-upstream-fair
--add-module=/build/nginx-1.10.2/debian/modules/ngx_http_substitutions_filter_module
--add-module=/build/nginx-1.10.2/debian/modules/nginx_http_upstream_check_module
--add-module=/build/nginx-1.10.2/debian/modules/graphite-nginx-module
--add-module=/build/nginx-1.10.2/debian/modules/nginx-module-vts
--add-module=/build/nginx-1.10.2/debian/modules/nginx-fluentd-module

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

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

Re: Kubernetes ingress

2017-11-21 Пенетрантность Sargas
Проверил с патчем http://hg.nginx.org/nginx/rev/9c29644f6d03 - всё работает
как нужно. Через минуту старые воркеры завершают свою работу.
Спасибо Максим!

20 ноября 2017 г., 22:15 пользователь Sargas  написал:

> >Патч-то наложить не забыли?  На всякий случае: в 1.3.6 патча нет, нужно
> именно накладывать руками и пересобирать nginx.  Если речь именно про
> websocket'ы, то он должен был помочь.
> Не забыл. Я взял ваш докер образ https://github.com/nginxinc/
> docker-nginx/blob/3ba04e37d8f9ed7709fd30bf4dc6c3
> 6554e578ac/mainline/stretch/Dockerfile , сделал чтобы для amd64 тоже с
> исходников собирался nginx, добавил туда наложение патча перед компиляцией.
> После чего собрал контейнер с ingress'ом использую контейнер с патченым
> nginx'ом.
>
> Завтра днем перепроверю конечно. И заодно попробую с 1.13.7
> Благодарю!
>
> 20 ноября 2017 г., 20:25 пользователь Maxim Dounin 
> написал:
>
> Hello!
>>
>> On Mon, Nov 20, 2017 at 08:03:22PM +0300, Maxim Dounin wrote:
>>
>> > Hello!
>> >
>> > On Mon, Nov 20, 2017 at 04:28:04PM +0200, Sargas wrote:
>> >
>> > > Патч не помог, проверял со свежей версией nginx. Больше 10-ти минут
>> воркеры
>> > > находятся в nginx: worker process is shutting down
>> > >
>> > > # nginx -V
>> > > nginx version: nginx/1.13.6
>> >
>> > [...]
>> >
>> > Патч-то наложить не забыли?  На всякий случае: в 1.3.6 патча нет,
>> > нужно именно накладывать руками и пересобирать nginx.  Если речь
>> > именно про websocket'ы, то он должен был помочь.
>> >
>> > Впрочем, в любом случае сейчас уже закоммичен чуть более лучший
>> > патч, который заодно лечит аналогичную проблему в mail и улучшает
>> > ситуацию в stream, тут:
>> >
>> > http://hg.nginx.org/nginx/rev/9c29644f6d03
>> >
>> > Релиз с ним (1.3.7) будет завтра.
>>
>> Err, 1.13.6 и 1.13.7 соответственно, конечно же.
>>
>> --
>> Maxim Dounin
>> http://mdounin.ru/
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru