Nginx
使用具有衝突和重疊路徑名的正則表達式
考慮以下正則表達式,我試圖將格式的請求路由
/customers/:id/products
到customerproduct域。我已將此衝突的重疊規則放在序列中的第一位以賦予其優先權,因為 location
/customers
也接受/customers/1
有人可以幫我解決以下路線嗎,我是 nginx 新手。
server { location /customers/[0-9]+/products { proxy_pass http://customerproduct:3000 } location /customers { proxy_pass http://customer:3000; } location /products { proxy_pass http://product:3000; } }
編輯
定影
location ~/customers/[0-9]+/products { proxy_pass http://customerproduct:3000; }
編輯 2
修復 2。
server { location ^/customers/[0-9]+/products { proxy_pass http://customerproduct:3000 } location ^/customers { proxy_pass http://customer:3000; } location ^/products { proxy_pass http://product:3000; } }
位置塊評估的語法和順序在手冊頁中有詳細說明。
第一個位置塊旨在使用正則表達式,它需要
~
or~*
運算符來指示。此外,應該匹配 URI 開頭的正則表達式應該包括^
錨點。例如:
server { location ~ ^/customers/[0-9]+/products { proxy_pass http://customerproduct:3000; } location /customers { proxy_pass http://customer:3000; } location /products { proxy_pass http://product:3000; } }
其餘位置是前綴位置,因此塊的順序無關緊要。