Nginx不区分大小写的URL和重写URL?

时间:2014-12-17 13:48:04

标签: nginx

我将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..

到(始终小写folder1)

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

其中 etc..etc..etc 。 =我需要保留的任何东西

我该怎么办?

1 个答案:

答案 0 :(得分: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