Мне нужен способ перенаправления клиентов, когда существующий путь не определен. Когда я ввожу конфигурацию возврата 301, nginx, кажется, игнорирует любые конфигурации местоположения. Он перенаправляет все.
Имя хоста в перенаправлении должно быть динамическим (от клиента). Эти серверы на самом деле являются контейнерами и развертываются в средах Dev/Prod. Таким образом, URL-адрес клиента меняется с чего-то вроде dev.example.com на example.com. Я бы предпочел не менять конфигурацию в зависимости от среды.
Я использую v1.18 на RHEL. Прокси-серверы — это приложения Angular, управляемые соответствующими разработчиками.
сервер {
слушать 80;
имя сервера _;
индекс index.html;
местоположение = /сервис/а {
proxy_pass http://svc-a.local/service/a/;
}
местоположение /сервис/а/ {
proxy_pass http://svc-a.local/service/a/;
}
местоположение = /сервис/б {
proxy_pass http://svc-b.local/service/b/;
}
расположение /сервис/б/ {
proxy_pass http://svc-b.local/service/b/;
}
местоположение = / сервис / х {
proxy_pass http://svc-x.local/service/x/;
}
местоположение /сервис/х/ {
proxy_pass http://svc-x.local/service/x/;
}
местоположение = /дом {
proxy_pass http://home.local/home/;
}
местоположение /дом/ {
proxy_pass http://home.local/home/;
}
# kubernetes исследует это, но не получает 301
расположение /nginx_status {
stub_status включен;
acccess_log выключен;
}
# ЕСЛИ НЕТ СОВПАДЕНИЙ ИЗ ВЫШЕ, ТОГДА ПЕРЕХОДИТЕ В /HOME
# попробуй #1
вернуть 301 http://$host/home/;
# попробуй #2
местоположение = / {
вернуть 301 http://$host/home/;
}
# попробуй #3
возврат 301 /домой/;
# попробуй #4
местоположение = / {
proxy_pass http://home.local/home/;
}
}