proxy_redirect
Директива `proxy_redirect` изменяет заголовки `Location` и `Refresh` в проксированном ответе, чтобы они были пригодны для клиента.
Описание
Директива proxy_redirect используется в NGINX для корректировки HTTP-заголовков, связанных с перенаправлениями от проксированного сервера. Когда запросы проксируются, в ответе могут присутствовать заголовки Location или Refresh, которые уведомляют клиента о том, куда нужно перенаправиться. Однако эти заголовки могут по-прежнему указывать на исходный вышестоящий сервер, а не на NGINX, доступный клиенту. Именно здесь вступает в действие директива proxy_redirect. Она принимает один или два аргумента: первый задаёт URL, который должен быть изменён (URL вышестоящего сервера), а второй, опциональный, указывает новый URL, который должен быть отправлен клиенту.
Например, если проксируемый сервер отправляет заголовок Location, указывающий на http://upstream-server/uri, и если вы зададите proxy_redirect http://upstream-server/ http://client-server/;, NGINX изменит заголовок Location на http://client-server/uri. Это гарантирует, что клиент получит перенаправления, указывающие на NGINX вместо проксируемого сервера. Можно указать несколько директив proxy_redirect, что позволяет реализовывать сложные сценарии маршрутизации, когда разным вышестоящим серверам требуются разные правила переписывания, делая директиву высоко гибкой для различных окружений.
Пример конфига
location /api {
proxy_pass http://upstream-server;
proxy_redirect http://upstream-server/ http://localhost:8080/;
}Будьте внимательны с конечными косыми чертами; они могут повлиять на формирование URL перенаправления.
Директива proxy_redirect должна использоваться в соответствующем контексте (http, server, location); её использование в неправильном контексте приведёт к ошибке.