Welcome! Log In Create A New Profile

Advanced

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin
September 01, 2020 02:08PM
да, спасибо за внимание и поддержку!

удивительно, но на старом сервере действительно NJS младше: 0.4.0
хотя ставятся из одного докерфайла (и сегодня я даже пересобирал контейнер)

мы также пришли к выводу, что пара переменных точно будет похожа (к тому же править частично — это странная практика)
в итоге нашлось решение без NJS

использовать $uri как unescaped-форму
и вот такую конструкцию для получения исходной формы:

map $request_uri $escaped_uri {
"~^(?P<path>[^?]*)(\?.*)?$" $path;
}

в итоге… мы поизучали свои данные и вообще это всё выкинули, оставив $uri — нечего баловать пользователей ;-)




> On 1 Sep 2020, at 20:51, Dmitry Volyntsev <xeioex@nginx.com> wrote:
>
>
> On 01.09.2020 08:59, Alexey Galygin wrote:
>> nginx из официального докер образа 1.18.0
>> njs шла в комплекте и отдельно не ставилась — 0.4.2
>> вообще никак не вмешивались…
>>
>> за альтернативу кода спасибо!
>> сейчас думаем, как бы аккуратно выпилить эти артефакты совсем
>>
>>
> Спасибо за баг-репорт. Могу подтвердить что проблема в NJS и появилась в версии 0.4.2 (вероятно обновилась вместе деплоем нового образа?).
>
> Удалось воспроизвести проблему самостоятельно. Она действительно оказалась связана с регулярными выражениями, а точнее с глобальным реплейсом replace(/_/g, "%5F"). При определенных условиях код мог уходить в endless-loop при этом поглощая всю доступную память. Исправленная версия приедет в 0.4.4.
>
> Уточнее касательно исходных сниппетов:
>
> function unescapeURI(r) { return r.uri.replace(/%20/g, ' '); }
>
> r.uri уже возвращает unescaped версию URI, и replace(/%20/g, ' ') вернет исходный URI.
> Как результат $uri $unescaped_uri должны быть идентичными.
>
>>> On 1 Sep 2020, at 07:56, Dmitry Volyntsev <xeioex@nginx.com> wrote:
>>>
>>>
>>> On 01.09.2020 00:42, Alexey Galygin wrote:
>>>> но на всякий случай, может есть версия как-то это нативно переписать для конфига без всяких языков и модулей?
>>>> какие есть рекомендации? (совсем выкидывать всё же стрёмно…)
>>> А подскажите свою версию njs (Если njs ставился из официальных пакетов, будет доступен бинарник njs, и тогда версию можно узнать так `njs -v`).
>>>
>>>> оказалось проблема в NJS части, какой-то баг там именно в связке 1.18.0 + Ubuntu 20.04
>>> менялась ли версия njs при апгрейде? Если нет, единственное что пока приходит на ум это изменения в версии libpcre между дистрибутивами.
>>>
>>> Как воркараунд можно попробовать переписать эти функции без использования глобальных регулярок (наиболее вероятное место проблемы).
>>>
>>> function unescapeURI(r) {
>>> return r.uri.replace(/%20/g, " ");
>>> }
>>>
>>> ->
>>>
>>> 1)
>>> // идентична по поведению исходной функции
>>> function unescapeURI(r) {
>>> return r.uri.split(/%20/).join(" ");
>>> }
>>>
>>> 2)
>>> // более стандартный метод, но заменит все %-encoded комбинации
>>> https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/decodeURI
>>> function unescapeURI(r) {
>>> return decodeURI(r.uri);
>>> }
>>>
>>>
>>> function escapeURI(r) {
>>> return r.uri.replace(/\s/g, "%20").replace(/_/g, "%5F");
>>> }
>>>
>>> ->
>>>
>>> 1)
>>> // идентична по поведению исходной функции
>>> function escapeURI(r) {
>>> return r.uri.split(" ").join("%20").split("_").join("%5F");
>>> }
>>>
>>> 2)
>>> // более стандартный метод, но заменит все %-encoded комбинации
>>> https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
>>> function escapeURI(r) {
>>> return encodeURI(r.uri);
>>> }
>>>

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin August 31, 2020 06:52AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Slawa Olhovchenkov August 31, 2020 07:02AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin August 31, 2020 07:12AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

karamba66@ukr.net August 31, 2020 07:36AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin August 31, 2020 08:12AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Илья Шипицин August 31, 2020 07:20AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin August 31, 2020 07:40AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Илья Шипицин August 31, 2020 09:08AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin August 31, 2020 09:22AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin August 31, 2020 09:24AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin August 31, 2020 11:12AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Илья Шипицин August 31, 2020 12:04PM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Vladislavik August 31, 2020 12:10PM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Илья Шипицин August 31, 2020 12:12PM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Slawa Olhovchenkov August 31, 2020 03:14PM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Evgeniy Berdnikov August 31, 2020 07:30AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Maxim Dounin August 31, 2020 09:34AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin August 31, 2020 09:50AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Maxim Dounin August 31, 2020 12:42PM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin August 31, 2020 05:44PM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Dmitry Volyntsev September 01, 2020 12:58AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin September 01, 2020 02:02AM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Dmitry Volyntsev September 01, 2020 01:52PM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin September 01, 2020 02:08PM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Alexey Galygin September 01, 2020 03:02PM

Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS

Konstantin Pavlov September 02, 2020 05:00AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 315
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready