【问题标题】:Nginx proxy pass with rewrite and regexNginx 代理通过重写和正则表达式
【发布时间】:2020-09-17 00:51:21
【问题描述】:

Nginx 能否重写一个 URL,然后将其用作代理通行证?

例如当我访问 http://localhost/downloads/example-com/pc.html 它应该代理到http://example.com/pc.html

基本上,我想使用我的域从另一个网站下载文件,这就是我这样做的原因

【问题讨论】:

  • 能否请您发布您的确切用例?
  • @BhavinHirpara,我编辑了

标签: nginx


【解决方案1】:

是的,您可以将 url 和 proxy_pass 重写为重写的 url。 但是根据您想要实现的目标,这个简单的解决方案也应该有效:

location ~ /example-com/(.*)$ {
    proxy_pass http://example.com/$1;
}

如果你想通过重写来实现它,那么你可以尝试以下一个:

location ~ /example-com/ {
   rewrite  /example-com/(.*) /$1 break;
   proxy_pass http://example.com;
}

更新:

传递另一个网站网址作为查询参数,如下所示:

http://yourdomain/downloads/data?data_url=example.com/pc.html

并如下更改您的 nginx 配置。

location ~ /downloads/data {
    set $data_url $arg_data_url;
    proxy_pass http://$data_url;
}

在此配置更改后,您可能会遇到解析器问题,因为我们在运行时在 proxy_pass 中传递主机名。要解决解析器问题,您可以点击此链接:https://runkiss.blogspot.com/2020/01/using-nginx-authrequest-to-proxy-to.html

【讨论】:

  • 我们可以让它动态化吗?
  • 你能传递另一个网站网址作为查询参数吗?
  • 是的,我们可以通过
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多