Gena Makhomed
December 15, 2021 09:16AM
Здравствуйте, Максим!

On 15.12.2021 15:39, Maxim Dounin wrote:

>>> Воспроизводится ли проблема на приведённом конфиге в чистом виде,
>>> без каких-либо других location'ов и/или rewrite'ов? Если да
>>> - то как выглядит минимальный конфиг, на котором проблема
>>> воспроизводится, полностью (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

Теперь понял, большое спасибо! Не дочитал документацию, после слов
"Проиллюстрируем вышесказанное примером" дальше уже читать не стал,
а после него оказывается еще есть описание поведения директивы...

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

Это особенности моей локальной конфигурации. На сервере есть
два контейнера, nginx-frontend и nginx-backend, запрос идет так:
client => nginx-frontend => nginx-backend => proxy_pass http://app

В контейнере nginx-frontend есть два сайта - example.com
и dev.example.com, оба они закрыты с помощью basic_auth:

location / {
auth_basic "Site under development";
auth_basic_user_file /etc/nginx/safe/example.com.htpasswd;
satisfy any;
allow 11.22.33.44; # мой IP адрес
deny all;
proxy_pass http://nginx-backend;
}

но для сайта example.com в конфигурации nginx-frontend
есть строчка location /download/ { proxy_pass http://nginx-backend; }
чтобы файлы можно было скачивать из интернета без ввода логина и пароля,
а в конфиге для сайта dev.example.com такой строчки нет.

При этом в контейнере nginx-backend конфигурации сайтов example.com
и dev.example.com идентичны между собой и отличаются только адресом
куда проксируются запросы через proxy_pass. Про эту строчку
в конфигурации nginx-frontend я уже и забыл, поэтому и сделал
ошибочное предположение, что nginx-backend по разному обрабатывает
конфигурацию в зависимости от того куда указывает proxy_pass,
потому что для сайта dev.example.com урл /download уходил
на proxy_pass а для example.com был 301 редирект.
В будущем постараюсь быть более внимательным.

--
Best regards,
Gena
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

Gena Makhomed December 14, 2021 04:28PM

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

Maxim Dounin December 14, 2021 06:34PM

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

Gena Makhomed December 15, 2021 02:16AM

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

Maxim Dounin December 15, 2021 08:40AM

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

Gena Makhomed December 15, 2021 09:16AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 138
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready