Nginx 不区分大小写 proxy_pass
Nginx case insensitive proxy_pass
我有一个名为 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
字段让我 "remove" URL 的 /app1/ 部分,至少就应用程序而言。所以 app1 认为它正在收到对根 url 的请求(例如,我在 app1 中有一条路线位于 '/'
,而不是 '/app1'
)。
但是,我想让 nginx 不区分大小写。因此,无论我去 http://example.com/App1
还是 http://example.com/APP1
,它仍然应该将请求转发给 app1, 和 删除 [=50= 的 /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/
不区分大小写
- 删除 url 的
/app1/
部分,当 "passing" 将 url 移至应用程序时
我试过重写 url,但它不允许我将 URI 的其余部分添加到 proxy_pass。
如有任何帮助,我们将不胜感激!
您应该捕获剩余的 url 然后使用它
location ~* /app1/(.*) {
proxy_pass http://localhost:8080/$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;
}
我有一个名为 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
字段让我 "remove" URL 的 /app1/ 部分,至少就应用程序而言。所以 app1 认为它正在收到对根 url 的请求(例如,我在 app1 中有一条路线位于 '/'
,而不是 '/app1'
)。
但是,我想让 nginx 不区分大小写。因此,无论我去 http://example.com/App1
还是 http://example.com/APP1
,它仍然应该将请求转发给 app1, 和 删除 [=50= 的 /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/
不区分大小写 - 删除 url 的
/app1/
部分,当 "passing" 将 url 移至应用程序时
我试过重写 url,但它不允许我将 URI 的其余部分添加到 proxy_pass。
如有任何帮助,我们将不胜感激!
您应该捕获剩余的 url 然后使用它
location ~* /app1/(.*) {
proxy_pass http://localhost:8080/$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;
}