nginx代理传递保留URL

时间:2017-11-22 16:54:35

标签: nginx proxy reverse-proxy proxypass

我在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>

你们中的一些人知道一些正则表达式来解析这个&#34; /&#34;?

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要在/正则表达式匹配中加入location。如下所示:

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

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

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

因为$ 1会包含或不包含/原始请求。