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