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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。