我有一个名为http://example.com
的网站,其中有一个可以在http://example.com/app1
访问的应用。 app1位于nginx反向代理后面,如下所示:
location /app1/ {
proxy_pass http://localhost:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
将尾部斜杠添加到proxy_pass
字段可让我"删除" URL的/ app1 /部分,至少就应用而言。所以app1认为它收到了对根网址的请求(例如,我在app1中有一条位于'/'
的路线,而不是'/app1'
)。
但是,我想让nginx让这个不区分大小写。因此,无论我转到http://example.com/App1
还是http://example.com/APP1
,它仍应将请求转发给app1,和删除网址的/ app1 /部分。
当我尝试使用nginx的不区分大小写的规则时,它不会将URI的其余部分转发给app1。
location ~* /app1/ {
proxy_pass http://localhost:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
这给了我一个nginx配置错误。
我的目标有两个:
/app1/
不区分大小写/app1/
部分网址到应用我已尝试重写网址,但它不允许我将其余的URI添加到proxy_pass。
任何帮助将不胜感激!
答案 0 :(得分:2)
您应该捕获其余网址,然后使用它
location ~* /app1/(.*) {
proxy_pass http://localhost:8080/$1$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}