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