小编Flo*_*obe的帖子

Nginx 代理拦截重定向并将自定义重定向传递给客户端

我有一个 Web 应用程序想要在未启用 CORS 的情况下从第三方站点访问文件。请求可以是具有任意参数的任意域。我正在向我的域发送一个请求,其中包含编码为 GET 参数的目标,即

GET https://www.example.com/proxy/?url=http%3A%2F%2Fnginx.org%2Fen%2Fdocs%2Fhttp%2Fngx_http_proxy_module.html
Run Code Online (Sandbox Code Playgroud)

然后在 Nginx 中我做

location /proxy/ {
    resolver 8.8.8.8;
    set_unescape_uri $dst $arg_url;
    proxy_pass $dst;
}
Run Code Online (Sandbox Code Playgroud)

这适用于单个文件,但目标服务器有时会返回一个 Location 标头,我想拦截并修改该标头以便客户端重试。

基本上我想转义 $sent_http_location,将其附加到https://www.example.com/proxy/?url=并将其传递回浏览器以重试。

我试过做

set_escape_uri $tmp $sent_http_location;
proxy_redirect $sent_http_header /pass/?v=$tmp;
Run Code Online (Sandbox Code Playgroud)

但这行不通。我还尝试保存 Location 标头,然后忽略传入的标头

proxy_hide_header
Run Code Online (Sandbox Code Playgroud)

并用我自己的替换它

proxy_set_header
Run Code Online (Sandbox Code Playgroud)

但忽略会导致我丢失保存它的变量。

如何配置 Nginx 来完成重定向处理,以便在代理站点重定向时将编码的 URL 返回给用户?

proxy redirect nginx

2
推荐指数
1
解决办法
5864
查看次数

标签 统计

nginx ×1

proxy ×1

redirect ×1