Nginx直接处理上游返回的重定向请求

2023-07-31  本文已影响0人  海边的贝壳林

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;
    }
}

参考: https://blog.csdn.net/hzbooks/article/details/109324553

上一篇下一篇

猜你喜欢

热点阅读