我有一個簡單的問題
- 使用 nginx 為 6 個上游服務器設定負載均衡器
我已經這樣做了
上游 hisservers {
ip_hash;
服務器A;
服務器B;
服務器C;
服務器D;
服務器E;
服務器 F; }服務器 {
聽 80;
server_name test.server;
location / {
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://hisservers;
} }
但問題是......上述解決方案不會在回應中重寫位置標頭..所以我總是重定向到這6個上游中的任何一個
然后我做了這個
proxy_redirect http://hisservers /;
最后還是不行,我做到了
proxy_redirect http://A//??;
proxy_redirect http://B//;
proxy_redirect http://C//;
proxy_redirect http://D//;
proxy_redirect http://E//;
proxy_redirect http://F//;
它有效..
我認為默認情況下 nginx 會匹配上游并重寫位置標頭..
關于這個的任何提示..
我認為我的解決方案很笨拙
uj5u.com熱心網友回復:
您的每個服務器在它們的 Location 回應標頭中回傳不同的主機名,因此您的proxy_redirect陳述句必須與這些主機名匹配。
您可以使用單獨的proxy_redirect陳述句匹配每個主機名,正如您在問題末尾所展示的那樣。
或者,proxy_redirect允許您使用正則運算式。有關詳細資訊,請參閱此檔案。
例如:
proxy_redirect ~*http://[^/] (/.*)$ $1;
以上陳述應代替您問題末尾的六個陳述。該[^/] 運算式匹配任何主機名,并且該(/.*)$運算式捕獲要在替換中使用的 URI。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/378590.html
下一篇:nginx用可能的查詢重寫
