nginx BUG ? unexpected redirect from https://example.com/download to https://example.com/download/

Maxim Dounin mdounin на mdounin.ru
Ср Дек 15 13:39:38 UTC 2021


Hello!

On Wed, Dec 15, 2021 at 09:14:53AM +0200, Gena Makhomed wrote:

> On 15.12.2021 1:33, Maxim Dounin wrote:
> 
> > Воспроизводится ли проблема на приведённом конфиге в чистом виде,
> > без каких-либо других location'ов и/или rewrite'ов?  Если да - то
> > как выглядит минимальный конфиг, на котором проблема
> > воспроизводится, полностью (nginx -T)?  Что показывает nginx -V?
> > Что в debug log'е?
> 
> Воспроизводится на таком конфиге:
> 
> # nginx -T
> error_log /var/log/nginx/error.log debug;
> events { use epoll; }
> http {
>      server {
>          server_name example.com;
>          location / { proxy_pass http://127.0.0.1; }
>          location /download/ { proxy_pass http://127.0.0.2; }
>      }
> }

На таком конфиге - воспроизводиться должно, это штатное поведение.
Явно документировано в описании директивы location 
(http://nginx.org/r/location/ru):

: Если location задан префиксной строкой со слэшом в конце и запросы 
: обрабатываются при помощи proxy_pass, fastcgi_pass, uwsgi_pass, 
: scgi_pass, memcached_pass или grpc_pass, происходит специальная 
: обработка. В ответ на запрос с URI равным этой строке, но без 
: завершающего слэша, будет возвращено постоянное перенаправление с 
: кодом 301 на URI с добавленным в конец слэшом. Если такое 
: поведение нежелательно, можно задать точное совпадение URI и 
: location, например: ...

Вопрос исключительно о том, почему, как утверждается в исходном 
сообщении, не срабатывает явно заданный location без завершающего 
слэша, в том числе с точным совпадением.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru