Здравствуйте, Максим!
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