nginx反向代理302自定义处理程序不工作

bejyjqdl  于 2023-01-29  发布在  Nginx
关注(0)|答案(2)|浏览(216)
location / {
    fastcgi_intercept_errors on;
    proxy_pass https://drive.google.com/uc?$query_string;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host drive.google.com;
    proxy_set_header Referer https://drive.google.com;
    error_page 301 302 307 = @handle_redirects;

}
location @handle_redirects {
    set $redirect_location '$upstream_http_location';
    proxy_pass $redirect_location;
    proxy_cache ngx-cache;
    proxy_cache_key $query_string;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

curl -I -A“ua”https://server/dl?id=trhtyjkfktkghjsutrtujyuk直接返回302,而不是转到handle_redirects部分,此配置工作在我的另一个vps与服务器Tengine,但它不工作在我的另一个vps与原始版本nginx,不知道哪里出错了。任何帮助将不胜感激。谢谢!!

cwxwcias

cwxwcias2#

我在尝试从https://picsum.photos网站代理图片时遇到了类似的问题。当请求一个特定的图片时,他们返回一个302重定向到一个HMAC签名的URL。
我的工作解决方案是:

server {
    listen 80;
    server_name dog.localhost.direct;
    location / {
        proxy_ssl_server_name on;
        proxy_intercept_errors on;
        error_page 301 302 307 = @handle_redirect;
        proxy_pass https://picsum.photos/id/237/536/354;
    }
    location @handle_redirect {
        set $saved_redirect_location '$upstream_http_location';
        resolver 8.8.8.8;
        proxy_pass $saved_redirect_location;
    }
}

希望这能帮到什么人。

相关问题