我有一个网站叫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 认为它正在向根 url 发出请求(例如,我在 app1 中有一条路由位于'/'
, not '/app1'
).
但是,我想让 nginx 不区分大小写。所以无论我去http://example.com/App1
or http://example.com/APP1
,它仍然应该将请求转发到 app1,and删除网址的 /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 配置错误。
我的目标有两个:
- Match
/app1/
不区分大小写
- 去除
/app1/
将 url“传递”到应用程序时作为 url 的一部分
我尝试重写 url,但它不允许我将 URI 的其余部分添加到 proxy_pass。
任何帮助,将不胜感激!
您应该捕获 url 的其余部分,然后使用它
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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)