如何调试和修复 nginx 错误的位置重定向问题?
How to debug and fix nginx wrong location redirection problem?
我在下面有一个 Nginx 配置文件列表。我想根据 Refer.
将请求发送到不同的服务器
当我用 URL "doamin.com/capi/a/b" 发送请求并引用 "a.com/a/1/test" 时,一切正常,服务器 "be" 将收到 "be/a/b" 请求。
但是如果我用 URL "doamin.com/capi/a/b" 发送请求并引用 "a.com/a/0/test",服务器 "be_demo" 将收到 "be_demo/" 请求,路径 "a/b" 丢失。
我试过在"be_demo"末尾加“/”,没用。
map $http_referer $be_pool {
default be;
"~a\.com\/.*\/0\/.*" be_demo;
}
server {
...
location ~ ^/capi/(.*)$ {
proxy_pass http://$be_pool/;
}
}
谢谢。
数字捕获 </code> 由要评估的最后一个 <em> 正则表达式 </em> 设置。在第二种情况下,<code>map
语句中的正则表达式在 location
语句中的正则表达式 之后计算 。
解决方案是改用命名捕获。
例如:
map $http_referer $be_pool {
default be;
"~a\.com\/.*\/0\/.*" be_demo;
}
server {
...
location ~ ^/capi/(?<myuri>.*)$ {
proxy_pass http://$be_pool/$myuri;
}
}
我在下面有一个 Nginx 配置文件列表。我想根据 Refer.
将请求发送到不同的服务器当我用 URL "doamin.com/capi/a/b" 发送请求并引用 "a.com/a/1/test" 时,一切正常,服务器 "be" 将收到 "be/a/b" 请求。 但是如果我用 URL "doamin.com/capi/a/b" 发送请求并引用 "a.com/a/0/test",服务器 "be_demo" 将收到 "be_demo/" 请求,路径 "a/b" 丢失。
我试过在"be_demo"末尾加“/”,没用。
map $http_referer $be_pool {
default be;
"~a\.com\/.*\/0\/.*" be_demo;
}
server {
...
location ~ ^/capi/(.*)$ {
proxy_pass http://$be_pool/;
}
}
谢谢。
数字捕获 </code> 由要评估的最后一个 <em> 正则表达式 </em> 设置。在第二种情况下,<code>map
语句中的正则表达式在 location
语句中的正则表达式 之后计算 。
解决方案是改用命名捕获。
例如:
map $http_referer $be_pool {
default be;
"~a\.com\/.*\/0\/.*" be_demo;
}
server {
...
location ~ ^/capi/(?<myuri>.*)$ {
proxy_pass http://$be_pool/$myuri;
}
}