Re: merge_slashes

2024-05-30 Пенетрантность jd
Так нужно, чтобы merge_slashes был выключен только  на http://127.0.0.1, а на всех остальных, где будет выбор хоста по SNI - включен. Грубо - устроит на всех http выключен, а на всех https включен.On 30 May 2024, at 17:36, Roman Arutyunyan  wrote:Добрый день,On 29 May 2024, at 9:53 PM, Vladimir Sopot  wrote:И как быть, если мне в одном из серверов необходимо иметь два подряд идущих слэша? Это purge для кэша, который зависит от cookies пользователя, которые, естественным образом могут быть пустыми.Самый простой способ - использовать TLS с SNI. В таком случае выбор сервера  будет происходить на этапе хендшейка TLS.Теоретически можно изменить поведение nginx таким образом, чтобы при указании полного uri в строке запроса выбор сервера происходил до обработки uri, и это вам поможет.Но это требует осторожности и анализа возможных последствий. И в этом случае marge_slashes будет работать по-разному в строке запроса и в заголовке Host, что тоже не очень хорошо.On 24 Apr 2024, at 19:24, Roman Arutyunyan  wrote:Добрый день,On 16 Apr 2024, at 11:41 PM, Vladimir Sopot <j...@artdesign.ru> wrote:Здравствуйте!Есть примерно такой упрощённый конфиг и при обращении к some.localsome.html merge_slashes не работает. Если в первом сервере убрать merge_slashes off, то всё работает нормально и во втором сервере. Почему так? nginx version: nginx/1.25.3На момент парсинга строки запроса, nginx еще не знает о том, какой виртуальный сервер будет выбран и использует настройки дефолтного.Если вы включите ssl, то ситуация будет другой.http {	merge_slashes on;	}server {	listen 127.0.0.1:80 default_server;		server_name 127.0.0.1 _ "";	merge_slashes off;	allow 127.0.0.1;	deny all;  location /nginx_status {  stub_status on;  }…. много location	}server {  listen *:80;  server_name  some.local;…. много location	}Best, VS___nginx-ru mailing listnginx-ru@nginx.orghttps://mailman.nginx.org/mailman/listinfo/nginx-ruRoman Arutyunyana...@nginx.com___nginx-ru mailing listnginx-ru@nginx.orghttps://mailman.nginx.org/mailman/listinfo/nginx-ru___nginx-ru mailing listnginx-ru@nginx.orghttps://mailman.nginx.org/mailman/listinfo/nginx-ru
Roman Arutyunyana...@nginx.com


___nginx-ru mailing listnginx-ru@nginx.orghttps://mailman.nginx.org/mailman/listinfo/nginx-ru___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: merge_slashes

2024-05-30 Пенетрантность Roman Arutyunyan
Добрый день,

> On 29 May 2024, at 9:53 PM, Vladimir Sopot  wrote:
> 
> И как быть, если мне в одном из серверов необходимо иметь два подряд идущих 
> слэша? Это purge для кэша, который зависит от cookies пользователя, которые, 
> естественным образом могут быть пустыми.

Самый простой способ - использовать TLS с SNI. В таком случае выбор сервера  
будет происходить на этапе хендшейка TLS.

Теоретически можно изменить поведение nginx таким образом, чтобы при указании 
полного uri в строке запроса выбор сервера происходил до обработки uri, и это 
вам поможет.
Но это требует осторожности и анализа возможных последствий. И в этом случае 
marge_slashes будет работать по-разному в строке запроса и в заголовке Host, 
что тоже не очень хорошо.

> 
>> On 24 Apr 2024, at 19:24, Roman Arutyunyan  wrote:
>> 
>> Добрый день,
>> 
>>> On 16 Apr 2024, at 11:41 PM, Vladimir Sopot >> <mailto:j...@artdesign.ru>> wrote:
>>> 
>>> Здравствуйте!
>>> 
>>> Есть примерно такой упрощённый конфиг и при обращении к 
>>> some.localsome.html merge_slashes не работает. Если в первом 
>>> сервере убрать merge_slashes off, то всё работает нормально и во втором 
>>> сервере. 
>>> Почему так? nginx version: nginx/1.25.3
>> 
>> На момент парсинга строки запроса, nginx еще не знает о том, какой 
>> виртуальный сервер будет выбран и использует настройки дефолтного.
>> 
>> Если вы включите ssl, то ситуация будет другой.
>> 
>>> 
>>> http {
>>> merge_slashes on;
>>> }
>>> 
>>> server {
>>> listen 127.0.0.1:80 default_server; 
>>> server_name 127.0.0.1 _ "";
>>> 
>>> merge_slashes off;
>>> allow 127.0.0.1;
>>> deny all;
>>> 
>>>   location /nginx_status {
>>>   stub_status on;
>>>   }
>>> 
>>> …. много location
>>> 
>>> }
>>> 
>>> server {
>>>   listen *:80;
>>>   server_name  some.local;
>>> 
>>> …. много location
>>> 
>>> }
>>> 
>>> Best, VS
>>> ___
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>> 
>> 
>> Roman Arutyunyan
>> a...@nginx.com <mailto:a...@nginx.com>
>> 
>> 
>> 
>> 
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org <mailto:nginx-ru@nginx.org>
>> https://mailman.nginx.org/mailman/listinfo/nginx-ru
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru


Roman Arutyunyan
a...@nginx.com




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


Re: merge_slashes

2024-05-29 Пенетрантность Vladimir Sopot
И как быть, если мне в одном из серверов необходимо иметь два подряд идущих 
слэша? Это purge для кэша, который зависит от cookies пользователя, которые, 
естественным образом могут быть пустыми.

> On 24 Apr 2024, at 19:24, Roman Arutyunyan  wrote:
> 
> Добрый день,
> 
>> On 16 Apr 2024, at 11:41 PM, Vladimir Sopot > <mailto:j...@artdesign.ru>> wrote:
>> 
>> Здравствуйте!
>> 
>> Есть примерно такой упрощённый конфиг и при обращении к 
>> some.localsome.html merge_slashes не работает. Если в первом сервере 
>> убрать merge_slashes off, то всё работает нормально и во втором сервере. 
>> Почему так? nginx version: nginx/1.25.3
> 
> На момент парсинга строки запроса, nginx еще не знает о том, какой 
> виртуальный сервер будет выбран и использует настройки дефолтного.
> 
> Если вы включите ssl, то ситуация будет другой.
> 
>> 
>> http {
>>  merge_slashes on;
>>  }
>> 
>> server {
>>  listen 127.0.0.1:80 default_server; 
>>  server_name 127.0.0.1 _ "";
>> 
>>  merge_slashes off;
>>  allow 127.0.0.1;
>>  deny all;
>> 
>>   location /nginx_status {
>>   stub_status on;
>>   }
>> 
>> …. много location
>> 
>>  }
>> 
>> server {
>>   listen *:80;
>>   server_name  some.local;
>> 
>> …. много location
>> 
>>  }
>> 
>> Best, VS
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> https://mailman.nginx.org/mailman/listinfo/nginx-ru
> 
> 
> Roman Arutyunyan
> a...@nginx.com <mailto:a...@nginx.com>
> 
> 
> 
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org <mailto:nginx-ru@nginx.org>
> https://mailman.nginx.org/mailman/listinfo/nginx-ru

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


Re: merge_slashes

2024-04-24 Пенетрантность Roman Arutyunyan
Добрый день,

> On 16 Apr 2024, at 11:41 PM, Vladimir Sopot  wrote:
> 
> Здравствуйте!
> 
> Есть примерно такой упрощённый конфиг и при обращении к 
> some.localsome.html merge_slashes не работает. Если в первом сервере 
> убрать merge_slashes off, то всё работает нормально и во втором сервере. 
> Почему так? nginx version: nginx/1.25.3

На момент парсинга строки запроса, nginx еще не знает о том, какой виртуальный 
сервер будет выбран и использует настройки дефолтного.

Если вы включите ssl, то ситуация будет другой.

> 
> http {
>   merge_slashes on;
>   }
> 
> server {
>   listen 127.0.0.1:80 default_server; 
>   server_name 127.0.0.1 _ "";
> 
>   merge_slashes off;
>   allow 127.0.0.1;
>   deny all;
> 
>   location /nginx_status {
>   stub_status on;
>   }
> 
> …. много location
> 
>   }
> 
> server {
>   listen *:80;
>   server_name  some.local;
> 
> …. много location
> 
>   }
> 
> Best, VS
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru


Roman Arutyunyan
a...@nginx.com




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


merge_slashes

2024-04-16 Пенетрантность Vladimir Sopot
Здравствуйте!

Есть примерно такой упрощённый конфиг и при обращении к 
some.localsome.html merge_slashes не работает. Если в первом сервере 
убрать merge_slashes off, то всё работает нормально и во втором сервере. 
Почему так? nginx version: nginx/1.25.3

http {
merge_slashes on;
}

server {
listen 127.0.0.1:80 default_server; 
server_name 127.0.0.1 _ "";

merge_slashes off;
allow 127.0.0.1;
deny all;

   location /nginx_status {
   stub_status on;
   }

…. много location

}

server {
   listen *:80;
   server_name  some.local;

…. много location

}

Best, VS
___
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru


Re: merge_slashes

2017-03-20 Пенетрантность Дмитрий Андреев
А что мешает сеошникам воспользоваться сеошными методами и прописать в
robots.txt что-то вроде Disallow: *//* ?
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: merge_slashes

2017-03-20 Пенетрантность Илья Шипицин
20 марта 2017 г., 22:06 пользователь Gena Makhomed <g...@csdoc.com> написал:

> On 20.03.2017 18:57, Илья Шипицин wrote:
>
> проще отключить merge и разруливать уже в приложении
>>>>
>>>
> отключать merge_slashes нельзя, тогда сломается вся логика работы:
>>> http://nginx.org/ru/docs/http/ngx_http_core_module.html#merge_slashes
>>>
>>
> сломается только, если у вас используются префиксные локейшены.
>>
>
> префиксные локейшены используются, поэтому merge_slashes off не подходит
>
> Локейшном с регуляркой ситуация не разыгрывается?
>>>>
>>>
> тема с merge_slashes redirect достаточно популярная,
>>> странно что это до сих пор еще никто не реализовал в nginx.
>>>
>>
> какой-нибудь rewrite_by_lua ? или аналог на nginScript
>>
>
> как оказалось, можно и просто "программированием на конфигах nginx":
>
> # remove multiple sequences of forward slashes
> # The $uri variable with have duplicate slashes removed by default via
> [merge_slashes on] - just need to rewrite back to $uri
> # note: use of the "^[^?]*?" pattern avoids any matches in the querystring
> section of URI - which would cause an infinite redirect loop
> if ($request_uri ~ "^[^?]*?//") {
> rewrite "^" $scheme://$host$uri permanent;
> }
>
> но добавлять этот фрагмент кода в каждый сайт... нет ли проще варианта?
>
> например, сделать merge_slashes redirect значением по умолчанию?


это очень печальная тема - менять поведение по умолчанию.
имхо, хорошим дизайном является оставить как есть + сделать крутилку, для
тех, кто хочет по-другому


>
>
> --
> Best regards,
>  Gena
>
> ___
> 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

Re: merge_slashes

2017-03-20 Пенетрантность Gena Makhomed

On 20.03.2017 18:57, Илья Шипицин wrote:


проще отключить merge и разруливать уже в приложении



отключать merge_slashes нельзя, тогда сломается вся логика работы:
http://nginx.org/ru/docs/http/ngx_http_core_module.html#merge_slashes



сломается только, если у вас используются префиксные локейшены.


префиксные локейшены используются, поэтому merge_slashes off не подходит


Локейшном с регуляркой ситуация не разыгрывается?



тема с merge_slashes redirect достаточно популярная,
странно что это до сих пор еще никто не реализовал в nginx.



какой-нибудь rewrite_by_lua ? или аналог на nginScript


как оказалось, можно и просто "программированием на конфигах nginx":

# remove multiple sequences of forward slashes
# The $uri variable with have duplicate slashes removed by default via 
[merge_slashes on] - just need to rewrite back to $uri
# note: use of the "^[^?]*?" pattern avoids any matches in the 
querystring section of URI - which would cause an infinite redirect loop

if ($request_uri ~ "^[^?]*?//") {
rewrite "^" $scheme://$host$uri permanent;
}

но добавлять этот фрагмент кода в каждый сайт... нет ли проще варианта?

например, сделать merge_slashes redirect значением по умолчанию?

--
Best regards,
 Gena

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

Re: merge_slashes

2017-03-20 Пенетрантность Илья Шипицин
20 марта 2017 г., 21:57 пользователь Vadim A. Misbakh-Soloviov <
ng...@mva.name> написал:

> > тема с merge_slashes redirect достаточно популярная,
> > странно что это до сих пор еще никто не реализовал в nginx.
>
> На самом деле это попахивает недопониманием некоторыми "SEO'шниками"
> реальных
> алгоритмов работы поисковиков (собственно, а откуда бы им их понимать,
> если не
> они их разрабатывали).
>

SEO-шники вообще на своей волне.
из опыта - не самым плохим решением является поставить apache (за nginx), и
дать SEO-шникам возможность на .htaccess пилить правила mod_rewrite


>
> На сколько я могу судить (может я что-то делал не так), но гугл и яндекс не
> настолько тупые, чтобы не смочь смерджить слеши при обработке и понять что
> это
> одна страница.
>
>
> Ну и отдельный вопрос как вообще ссылки с кучей слешей становятся известны
> поисковикам.
> ___
> 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

Re: merge_slashes

2017-03-20 Пенетрантность Vadim A. Misbakh-Soloviov
> тема с merge_slashes redirect достаточно популярная,
> странно что это до сих пор еще никто не реализовал в nginx.

На самом деле это попахивает недопониманием некоторыми "SEO'шниками" реальных 
алгоритмов работы поисковиков (собственно, а откуда бы им их понимать, если не 
они их разрабатывали).

На сколько я могу судить (может я что-то делал не так), но гугл и яндекс не 
настолько тупые, чтобы не смочь смерджить слеши при обработке и понять что это 
одна страница.


Ну и отдельный вопрос как вообще ссылки с кучей слешей становятся известны 
поисковикам.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: merge_slashes

2017-03-20 Пенетрантность Gena Makhomed


On 20.03.2017 18:21, Илья Шипицин wrote:


проще отключить merge и разруливать уже в приложении


отключать merge_slashes нельзя, тогда сломается вся логика работы:
http://nginx.org/ru/docs/http/ngx_http_core_module.html#merge_slashes

On 20.03.2017 17:02, Pavel V. wrote:

> Локейшном с регуляркой ситуация не разыгрывается?

теоретически да, но получается достаточно криво в результате:
http://stackoverflow.com/questions/14832780/nginx-merge-slashes-redirect

P.S.

тема с merge_slashes redirect достаточно популярная,
странно что это до сих пор еще никто не реализовал в nginx.

--
Best regards,
 Gena

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

Re: merge_slashes

2017-03-20 Пенетрантность Илья Шипицин
проще отключить merge и разруливать уже в приложении

20 марта 2017 г., 19:41 пользователь Gena Makhomed <g...@csdoc.com> написал:

> Здравствуйте!
>
> Можно ли сделать в директиве merge_slashes параметр redirect,
> чтобы из урла с несколькими слешами в канонический урл
> преобразование происходило путем 301 редиректа?
>
> SEO-шники пристали, говорят так как сейчас - получается дубль страниц
> и чтобы дубля не было надо делать редирект вместо простого склеивания.
>
> --
> Best regards,
>  Gena
>
> ___
> 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

Re: merge_slashes

2017-03-20 Пенетрантность Pavel V.
Здравствуйте.

Вы писали 20 марта 2017 г., 21:41:04:

> Можно ли сделать в директиве merge_slashes параметр redirect,
> чтобы из урла с несколькими слешами в канонический урл
> преобразование происходило путем 301 редиректа?

Локейшном с регуляркой ситуация не разыгрывается?


-- 
С уважением,
 Pavel  mailto:pavel2...@ngs.ru

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

merge_slashes

2017-03-20 Пенетрантность Gena Makhomed

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

Можно ли сделать в директиве merge_slashes параметр redirect,
чтобы из урла с несколькими слешами в канонический урл
преобразование происходило путем 301 редиректа?

SEO-шники пристали, говорят так как сейчас - получается дубль страниц
и чтобы дубля не было надо делать редирект вместо простого склеивания.

--
Best regards,
 Gena

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

Вопрос про merge_slashes

2014-04-25 Пенетрантность Михаил Монашёв
Здравствуйте.

В доке http://nginx.org/ru/docs/http/ngx_http_core_module.html#merge_slashes
написано Однако из соображений безопасности лучше избегать отключения 
преобразования.

Что именно небезопасного может произойти приmerge_slashes off;

Поясню проблему. Сайт сильно спамят. Я настроил правило, которое
смотрит лог и если происходит более Х обращений вроде
POST /p/add_topic.cgi HTTP/1.1
то ip считается подозрительным. Спамер это просёк и сейчас шлёт
запросы вот такие:
POST //p/add_topic.cgi HTTP/1.1

Я могу свою парсилку логов поправить, но и с директивой хотелось бы
понять проблему.

-- 
С уважением,
 Михаил  mailto:postmas...@softsearch.ru

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

Re: Вопрос про merge_slashes

2014-04-25 Пенетрантность Maxim Dounin
Hello!

On Fri, Apr 25, 2014 at 03:37:34PM +0400, Михаил Монашёв wrote:

 Здравствуйте.
 
 В доке http://nginx.org/ru/docs/http/ngx_http_core_module.html#merge_slashes
 написано Однако из соображений безопасности лучше избегать отключения 
 преобразования.
 
 Что именно небезопасного может произойти приmerge_slashes off;
 
 Поясню проблему. Сайт сильно спамят. Я настроил правило, которое
 смотрит лог и если происходит более Х обращений вроде
 POST /p/add_topic.cgi HTTP/1.1
 то ip считается подозрительным. Спамер это просёк и сейчас шлёт
 запросы вот такие:
 POST //p/add_topic.cgi HTTP/1.1
 
 Я могу свою парсилку логов поправить, но и с директивой хотелось бы
 понять проблему.

Если отключить merge_slashes, то ограничения вида

location /p/ { allow 127.0.0.1; deny all; ... }

точно так же легко обходятся добавлением лишнего слеша.

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

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

Re: Вопрос про merge_slashes

2014-04-25 Пенетрантность denis

25.04.2014 15:37, Михаил Монашёв пишет:

Здравствуйте.

В доке http://nginx.org/ru/docs/http/ngx_http_core_module.html#merge_slashes
написано Однако из соображений безопасности лучше избегать отключения 
преобразования.

Что именно небезопасного может произойти приmerge_slashes off;

Поясню проблему. Сайт сильно спамят. Я настроил правило, которое
смотрит лог и если происходит более Х обращений вроде
POST /p/add_topic.cgi HTTP/1.1
то ip считается подозрительным. Спамер это просёк и сейчас шлёт
запросы вот такие:
POST //p/add_topic.cgi HTTP/1.1

Я могу свою парсилку логов поправить, но и с директивой хотелось бы
понять проблему.


#to http
map $binary_remote_addr $is_post {
POST $binary_remote_addr;
}
limit_req_zone $is_post zone=post:1m rate=12r/m;

location / {
limit_req zone=post burst=1 nodelay;
limit_req zone=limitReqsPerIP burst=8 nodelay;
...

И ловим в еррлогах 503, после чего уже банним.
Вариант 2

location /login/ {
   if ($request_method = POST) {
   #limit_req zone=pmk-login; #burst=1;
   return 402;
   }

   error_page 402 @post;

location @post {
access_log post.log;
limit_req zone=pmk-login; #burst=1;

proxy_pass http://BE;
proxy_redirect off;
proxy_next_upstream error timeout invalid_header 
http_500 http_502 http_503;

}

Вариант 3
location ~* add_topic.cgi$ {
и тоже лимиты, if на POST итд

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

Re[2]: Вопрос про merge_slashes

2014-04-25 Пенетрантность Михаил Монашёв
Здравствуйте, Илья.

 спамеров интересует накрутка индексов цитирования.
 если вы поправите движок форума и вместо прямой ссылки на сайт спамера
 на форуме будет размещаться ссылка на вашу страничку, на которой будет
 предупреждение вы хотите перейти по такому-то адресу ?, то спамерам
 не будет толка от вашего форума. и они от вас отстанут :-)

Расскажите это автору вот этого поста: 
http://beon.ru/discussion/12270-135-rvz-read.shtml

-- 
С уважением,
 Михаил  mailto:postmas...@softsearch.ru

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