Так нужно, чтобы merge_slashes был выключен только  на http://127.0.0.1, а на всех остальных, где будет выбор хоста по SNI - включен. Грубо - устроит на всех http выключен, а на всех https включен.

On 30 May 2024, at 17:36, Roman Arutyunyan <a...@nginx.com> wrote:

Добрый день,

On 29 May 2024, at 9:53 PM, Vladimir Sopot <j...@artdesign.ru> wrote:

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

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

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


On 24 Apr 2024, at 19:24, Roman Arutyunyan <a...@nginx.com> wrote:

Добрый день,

On 16 Apr 2024, at 11:41 PM, Vladimir Sopot <j...@artdesign.ru> wrote:

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

Есть примерно такой упрощённый конфиг и при обращении к some.local////////some.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




_______________________________________________
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
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить