【问题标题】:nginx proxy pass preserving URLnginx 代理传递保留 URL
【发布时间】:2018-05-06 12:14:47
【问题描述】:

我在 nginx 中实现了一个 proxy_pass 规则,它只适用于一些链接。我的规则是:

server_name www.example.com

location ~ /en/(.*)$ {
        resolver 8.8.8.8;
        proxy_pass http://www.destinyweb.en/$1;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
    }

我的目的是键入“www.example.com/en/index.jsp”,然后 proxy_pass 将我的请求重定向到“www.destinyweb.en/index.jsp”。

当目标网页中的链接类似于“index.jsp”时,它运行良好,但当链接类似于“/index.jsp”(在 index.jsp 前带有斜杠)时,它不起作用。一些链接在目标文件之前有“/”,而其他链接没有。

当网站的内容像这样运行良好时:

<a href="index.jsp">Hello</a>

当网站的内容像这样不起作用时:

<a href="/index.jsp">Hello</a>

你们中的一些人知道一些正则表达式来解析这个“/”?

谢谢!

【问题讨论】:

    标签: nginx proxy reverse-proxy proxypass


    【解决方案1】:

    您需要在location 正则表达式匹配中包含/。所以像:

    location ~ ^/en(/.*)?$ {
    

    将匹配有或没有前导斜杠。您还可以像这样修改proxy_pass 行:

    proxy_pass http://www.destinyweb.en$1;
    

    因为 $1 会像原始请求一样包含或不包含 /

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 2014-05-10
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      相关资源
      最近更新 更多