[英]How to debug and fix nginx wrong location redirection problem?
我在下面有一個 Nginx 配置文件列表。 我想根據引用將請求發送到不同的服務器。
當我發送帶有 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/$1;
}
}
謝謝。
數字捕獲$1
由要評估的最后一個正則表達式設置。 在第二種情況下, map
語句中的正則表達式在location
語句中的正則表達式之后計算。
解決方案是改用命名捕獲。
例如:
map $http_referer $be_pool {
default be;
"~a\.com\/.*\/0\/.*" be_demo;
}
server {
...
location ~ ^/capi/(?<myuri>.*)$ {
proxy_pass http://$be_pool/$myuri;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.