Re: merge_slashes

2024-05-30 Thread 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 >> > 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
> 
> ___
> 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-30 Thread 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  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