【问题标题】:Nginx case insensitive URL and rewrite URL?Nginx不区分大小写的URL和重写URL?
【发布时间】:2015-05-20 00:20:43
【问题描述】:

我已将 Nginx 配置为反向代理

 server {
 listen 80;
 server_name   www.pluto.com;
 location / {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:8080;
 }
}

我需要将来自 FOLDER1(不区分大小写)的任意组合的 URL 请求从 URL 重写

http://www.pippo.com/FOLDER1/etc..etc..etc..

到(总是小写的文件夹1)

http://127.0.0.1/folder1/etc..etc..etc...

在哪里等..等..等。 = 我需要保留的任何东西

我该怎么办?

【问题讨论】:

    标签: nginx


    【解决方案1】:
    location ~* ^/folder1(?:/?)(.*) {
        proxy_pass http://127.0.0.1:8080/folder1/$1$is_args$args;
    }
    

    (?:/?) 表示我们可能在folder1 之后有一个斜线,在这种情况下我们将忽略它。然后我们抓取(.*) 剩下的任何东西,它们将被放置在$1 中。然后在proxy_pass 参数中,我们构建新的URI:首先我们在原始URI 中添加folder1/ 之后的内容,然后我们添加所有参数。因此,如果您的原始 URI 是 /folder1/test,则 proxy_pass URI 应该是 http://127.0.0.1:8080/folder1/test。对有参数的情况进行一些实验,例如/folder1/test?id=1。我不确定(.*) 是否也会捕获?id=1 部分。如果是,则应将proxy_pass 更改为http://127.0.0.1:8080/folder1/$1

    【讨论】:

    • 你能在你的答案中添加一些解释吗?
    • 最好将您的解释添加到答案本身(使用答案下方的edit 按钮),而不是在 cmets 中解释您的答案。
    • 真棒答案我一直在寻找这个!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多