Nginx 代理通过 get 参数传递 url

Nginx 代理通过 get 参数传递 url

假设我有一个example.com装有 nginx 的服务器。

我想创建一个代理,它将代理传递作为请求 URI 或 GET 参数的一部分给出的 URL(它可能包含查询字符串)。

例如,我希望 nginx在发出请求http://www.google.pl/image.png?x=y时进行解析。GET example.com/proxy/http://www.google.pl/image.png?x=y

我曾尝试过这样的事情:

location /proxy {
    rewrite /proxy(.*) /$1 break;

  resolver 8.8.8.8;
  proxy_pass http://$arg_host/$arg_uri?$query_string;
}

也许我想要重定向?假设我想提供位于不同服务器上的图像(在我的域上)。

答案1

尝试这个:

location ~ /proxy/(http://.*) {
    resolver 8.8.8.8;
    proxy_pass http://$1$is_args$args;
}

不需要明确重写。如果请求行有参数,$is_args则将设置为?,否则将设置为空字符串,并且$args将包含请求中的参数(不包括?),如果没有查询参数,则设置为空字符串。$1将匹配位置正则表达式中包含的 URI 部分( ... )

相关内容