簡體   English   中英

如何調試和修復nginx錯誤位置重定向問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM