Nginx代理的上游服务返回的301、302等重定向请求,直接在服务器端(Nginx)端进行处理,不将重定向信息返回给客户端。客户端不感知重定向请求。
Nginx 提供了内置变量 “$upstream_http_< 响应头字段名>” 可获取响应头字段属性值
@error_page 是内部循环,最大循环次数为 10 次。
server {
listen 8888;
resolver 114.114.114.114 valid=30s;
# Nginx处理状态码大于300的响应结果
proxy_intercept_errors on;
# 启用多级错误跳转
recursive_error_pages on;
location ~ /proxy {
proxy_pass http://backend;
error_page 301 302 307 308 = @error_page_302;
}
location @error_page_302 {
set $new_redirect_location '$upstream_http_location';
proxy_pass $new_redirect_location;
# 支持多层3XX跳转
error_page 301 302 307 = @error_page_302;
}
}