proxy_redirect
`proxy_redirect` 指令修改被代理响应中的 `Location` 和 `Refresh` 头,以使其适合客户端。 — NGINX HTTP Core
proxy_redirect
httpserverlocation
语法proxy_redirect [default | off | redirect_uri new_uri];
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1-2
说明
`proxy_redirect` 指令用于 NGINX,调整来自被代理服务器的与重定向相关的 HTTP 头。当请求被代理时,响应可能包含通知客户端重定向目标的 `Location` 或 `Refresh` 头。然而,这些头可能仍然指向原始的上游服务器而不是面向客户端的 NGINX 服务器。这时 `proxy_redirect` 指令就派上用场了。它接受一个或两个参数:第一个指定需要被修改的 URL(上游服务器的 URL),第二个是可选的,指定应发送回客户端的新 URL。\n\n例如,如果被代理服务器发送了一个 `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); 在错误的上下文中使用会导致错误。