From gmm на csdoc.com Thu Nov 3 15:05:57 2022 From: gmm на csdoc.com (Gena Makhomed) Date: Thu, 3 Nov 2022 17:05:57 +0200 Subject: =?UTF-8?B?0J/QtdGA0LLRi9C5INCy0YvQv9GD0YHQuiBBbmdpZSwg0YTQvtGA0Lo=?= =?UTF-8?B?0LAgTmdpbngg0L7RgiDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7Qsiwg0YPRiNC1?= =?UTF-8?B?0LTRiNC40YUg0LjQtyDQutC+0LzQv9Cw0L3QuNC4IEY1?= Message-ID: <7c27619b-b253-3c93-a1c0-bc7817032824@csdoc.com> Максим, можете рассказать, что Вы думаете по этому поводу? Первый выпуск Angie, форка Nginx от разработчиков, ушедших из компании F5 https://www.opennet.ru/opennews/art.shtml?num=58036 Из дальнейших планов отмечается значительное расширение исходной функциональности при сохранении базовой совместимости с конфигурацией Nginx и возможности использования Angie в качестве замены Nginx без существенного изменения настроек. По сравнению с оригинальным Nginx планируется качественно улучшить отказоустойчивость, повысить быстродействие, упростить сопровождение и добавить дополнительные возможности для кластерных систем. -- Best regards, Gena From mdounin на mdounin.ru Thu Nov 3 16:32:24 2022 From: mdounin на mdounin.ru (Maxim Dounin) Date: Thu, 3 Nov 2022 19:32:24 +0300 Subject: =?koi8-r?B?8MXS19nKINfZ0NXTyyBBbmdp?= =?koi8-r?B?ZSwgxs/Sy8EgTmdpbnggz9Qg0sHa0sHCz9TeycvP1ywg1dvFxNvJyCDJ2iDL?= =?koi8-r?B?z83Qwc7JyQ==?= F5 In-Reply-To: <7c27619b-b253-3c93-a1c0-bc7817032824@csdoc.com> References: <7c27619b-b253-3c93-a1c0-bc7817032824@csdoc.com> Message-ID: Hello! On Thu, Nov 03, 2022 at 05:05:57PM +0200, Gena Makhomed wrote: > Максим, можете рассказать, что Вы думаете по этому поводу? Лицензия позволяет, если ребята хотят делать форк - никто не может им этого запретить. Успехов им. -- Maxim Dounin http://mdounin.ru/ From mihakot на gmail.com Thu Nov 17 07:48:52 2022 From: mihakot на gmail.com (MihaKot) Date: Thu, 17 Nov 2022 10:48:52 +0300 Subject: gzip proxy Message-ID: Коллеги, день добрый. Столкнулся с проблемой, и не могу понять где косяк. есть сервер proxy (gate) есть сервер приложения (client) почему то не срабатывает сжатие. т.е. пользаку отдается не сжатый контент. конфиг на клиенте gzip on; # Enable Gzip compressed. gzip_http_version 1.1; gzip_comp_level 5; gzip_min_length 1000; gzip_proxied any; gzip_vary on; gzip_types text/css text/* text/javascript message/* application/x-javascript application/json application/xml application/atom+xml application/xaml+xml; конфиг на gate server { listen *:443 ssl http2; index index.html; server_name *****.ru; client_max_body_size 0; ssl_certificate /etc/nginx/ssl/***.ru/cert.pem; ssl_certificate_key /etc/nginx/ssl/****.ru/key.pem; include conf.d/ssl.conf; include conf.d/headers.conf; #include conf.d/_gzip.conf; location / { proxy_pass http://cluster_host; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; port_in_redirect off; proxy_connect_timeout 120; } location ~ /.well-known { allow all; #alias /usr/share/nginx/html/.well-known; root /usr/share/nginx/html/; } } -- P.S. Сохраняйте переписку в теле письма. ___________________________________ Best regards, Konstantin @MihaKot@ Aksarin. Phone: +7 921 74 66 818 Skype: mihakot E-mail: mihakot на gmail.com ----------- следующая часть ----------- Вложение в формате HTML было извлечено… URL: From mdounin на mdounin.ru Thu Nov 17 15:47:31 2022 From: mdounin на mdounin.ru (Maxim Dounin) Date: Thu, 17 Nov 2022 18:47:31 +0300 Subject: gzip proxy In-Reply-To: References: Message-ID: Hello! On Thu, Nov 17, 2022 at 10:48:52AM +0300, MihaKot wrote: > Столкнулся с проблемой, и не могу понять где косяк. > > есть сервер proxy (gate) > есть сервер приложения (client) > > почему то не срабатывает сжатие. т.е. пользаку отдается не сжатый контент. > > конфиг на клиенте > > gzip on; # Enable Gzip compressed. > > gzip_http_version 1.1; [...] > конфиг на gate > > server { > listen *:443 ssl http2; > index index.html; > server_name *****.ru; > client_max_body_size 0; > > ssl_certificate /etc/nginx/ssl/***.ru/cert.pem; > ssl_certificate_key /etc/nginx/ssl/****.ru/key.pem; > > include conf.d/ssl.conf; > include conf.d/headers.conf; > #include conf.d/_gzip.conf; > > location / { > proxy_pass http://cluster_host; > proxy_set_header Host $host; > proxy_set_header X-Real-IP $remote_addr; > proxy_set_header X-Forwarded-For $remote_addr; > port_in_redirect off; > proxy_connect_timeout 120; > } По умолчанию при проксировании используется HTTP/1.0 (http://nginx.org/r/proxy_http_version), при этом сжатие ответов у вас включено только для HTTP/1.1. Соответственно в вашей конфигурации бэкенд будет всегда отдавать несжатые ответы. Нужно либо на бэкенде включить сжатие для HTTP/1.0 (что может быть не очень хорошей идеей), либо переключить проксирование на HTTP/1.1, либо сжимать ответы на фронтенде. -- Maxim Dounin http://mdounin.ru/ From mihakot на gmail.com Thu Nov 17 15:55:29 2022 From: mihakot на gmail.com (MihaKot) Date: Thu, 17 Nov 2022 18:55:29 +0300 Subject: gzip proxy In-Reply-To: References: Message-ID: Да, спасибо. Я уже разобрался в проблеме. Файл который проверял был тип application/javascript. Его просто не было в списке миметайпов для сжатия. чт, 17 нояб. 2022 г., 6:48 PM Maxim Dounin : > Hello! > > On Thu, Nov 17, 2022 at 10:48:52AM +0300, MihaKot wrote: > > > Столкнулся с проблемой, и не могу понять где косяк. > > > > есть сервер proxy (gate) > > есть сервер приложения (client) > > > > почему то не срабатывает сжатие. т.е. пользаку отдается не сжатый > контент. > > > > конфиг на клиенте > > > > gzip on; # Enable Gzip compressed. > > > > gzip_http_version 1.1; > > [...] > > > конфиг на gate > > > > server { > > listen *:443 ssl http2; > > index index.html; > > server_name *****.ru; > > client_max_body_size 0; > > > > ssl_certificate /etc/nginx/ssl/***.ru/cert.pem; > > ssl_certificate_key /etc/nginx/ssl/****.ru/key.pem; > > > > include conf.d/ssl.conf; > > include conf.d/headers.conf; > > #include conf.d/_gzip.conf; > > > > location / { > > proxy_pass http://cluster_host; > > proxy_set_header Host $host; > > proxy_set_header X-Real-IP $remote_addr; > > proxy_set_header X-Forwarded-For $remote_addr; > > port_in_redirect off; > > proxy_connect_timeout 120; > > } > > По умолчанию при проксировании используется HTTP/1.0 > (http://nginx.org/r/proxy_http_version), при этом сжатие ответов у > вас включено только для HTTP/1.1. Соответственно в вашей > конфигурации бэкенд будет всегда отдавать несжатые ответы. > > Нужно либо на бэкенде включить сжатие для HTTP/1.0 (что может быть > не очень хорошей идеей), либо переключить проксирование на > HTTP/1.1, либо сжимать ответы на фронтенде. > > -- > Maxim Dounin > http://mdounin.ru/ > _______________________________________________ > nginx-ru mailing list -- nginx-ru на nginx.org > To unsubscribe send an email to nginx-ru-leave на nginx.org > ----------- следующая часть ----------- Вложение в формате HTML было извлечено… URL: From Vladimir.Korobov на infotecs.ru Tue Nov 22 13:49:22 2022 From: Vladimir.Korobov на infotecs.ru (Korobov Vladimir) Date: Tue, 22 Nov 2022 13:49:22 +0000 Subject: =?koi8-r?B?89TB1MnexdPLycogwc7BzMnaIG5naW54?= Message-ID: <1aca6e2b5a6544289e2ec573fa1579db@infotecs.ru> Добрый день. Статический анализ исходного кода выявил некоторые непонятные для меня места. ngx_http_proxy_module.c: строка 1489 while (*(uintptr_t *) le.ip) { lcode = *(ngx_http_script_len_code_pt *) le.ip; (void) lcode(&le); for (val_len = 0; *(uintptr_t *) le.ip; val_len += lcode(&le)) { lcode = *(ngx_http_script_len_code_pt *) le.ip; } le.ip += sizeof(uintptr_t); if (val_len == 0) { e.skip = 1; while (*(uintptr_t *) e.ip) { code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); } e.ip += sizeof(uintptr_t); e.skip = 0; continue; } code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); *e.pos++ = ':'; *e.pos++ = ' '; while (*(uintptr_t *) e.ip) { code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); } e.ip += sizeof(uintptr_t); *e.pos++ = CR; *e.pos++ = LF; } В этой строке e.ip не проверяется на валидность перед использованием, хотя в этом файле это всегда делается перед использованием. Помогите понять почему? Подобное происходит в ngx_http_scgi_module.c: 852 if (skip_empty && val_len == 0) { e.skip = 1; while (*(uintptr_t *) e.ip) { code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); } e.ip += sizeof(uintptr_t); e.skip = 0; continue; } #if (NGX_DEBUG) key = e.pos; #endif code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); #if (NGX_DEBUG) val = e.pos; #endif while (*(uintptr_t *) e.ip) { code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); } И в ngx_http_uwsgi_module.c : 1069 if (skip_empty && val_len == 0) { e.skip = 1; while (*(uintptr_t *) e.ip) { code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); } e.ip += sizeof(uintptr_t); e.skip = 0; continue; } *e.pos++ = (u_char) (key_len & 0xff); *e.pos++ = (u_char) ((key_len >> 8) & 0xff); code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); *e.pos++ = (u_char) (val_len & 0xff); *e.pos++ = (u_char) ((val_len >> 8) & 0xff); while (*(uintptr_t *) e.ip) { code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); } С уважением, Владимир Коробов ----------- следующая часть ----------- Вложение в формате HTML было извлечено… URL: From mdounin на mdounin.ru Tue Nov 22 14:18:28 2022 From: mdounin на mdounin.ru (Maxim Dounin) Date: Tue, 22 Nov 2022 17:18:28 +0300 Subject: =?koi8-r?B?89TB1MnexdPLycogwc7BzMk=?= =?koi8-r?Q?=DA?= nginx In-Reply-To: <1aca6e2b5a6544289e2ec573fa1579db@infotecs.ru> References: <1aca6e2b5a6544289e2ec573fa1579db@infotecs.ru> Message-ID: Hello! On Tue, Nov 22, 2022 at 01:49:22PM +0000, Korobov Vladimir via nginx-ru wrote: > Статический анализ исходного кода выявил некоторые непонятные для меня места. > ngx_http_proxy_module.c: строка 1489 > > while (*(uintptr_t *) le.ip) { > > lcode = *(ngx_http_script_len_code_pt *) le.ip; > (void) lcode(&le); [...] > code = *(ngx_http_script_code_pt *) e.ip; > code((ngx_http_script_engine_t *) &e); [...] > } > > В этой строке e.ip не проверяется на валидность перед > использованием, хотя в этом файле это всегда делается перед > использованием. Помогите понять почему? Тут e.ip используется после проверки le.ip в начале цикла. Если вдруг e.ip окажется NULL - это означает, что коды в headers->lengths и headers->values рассинхронизированы, и всё происходящее не имеет смысла. -- Maxim Dounin http://mdounin.ru/