當前位置:首頁 > IT技術 > Web編程 > 正文

nginx 之$proxy_host|$host|$http_host區(qū)別
2021-09-13 15:36:27

作者:gyj110?時間: 2021-02-05 08:52:01
【摘要】proxy_set_header?允許重新定義或者添加發(fā)往后端服務器的請求頭。value可以包含文本、變量或者它們的組合。 當且僅當當前配置級別中沒有定義proxy_set_header指令時,會從上面的級別繼承配置。 默認情況下,只有兩個請求頭會被重新定義:proxy_set_header Host $proxy_host;proxy_set_header Connection close...

[云推官招募計劃]

推薦新用戶注冊并下單即可獲得現(xiàn)金獎勵
?上新

[免費課程]

Python編程學習路徑
?上新

[免費套餐]

1核2G 2核4G云服務器免費 云數(shù)據(jù)庫0元試用
?熱銷

[開發(fā)利器]

開發(fā)者專享優(yōu)惠,解決研發(fā)效率、集成難題
?公告

proxy_set_header?允許重新定義或者添加發(fā)往后端服務器的請求頭。value可以包含文本、變量或者它們的組合。 當且僅當當前配置級別中沒有定義proxy_set_header指令時,會從上面的級別繼承配置。 默認情況下,只有兩個請求頭會被重新定義:

proxy_set_header Host $proxy_host;

proxy_set_header Connection close;

?

nginx對于upstream默認使用的是基于IP的轉發(fā),因此對于以下配置:

upstream web {??

server abc.com;??

}??

server {??

listen 80;??

server_name? ?www.hehe.com;??

?

location /front {??

proxy_pass http://web;??

proxy_set_header Host $proxy_host;??

}??

}

?

當匹配到/front時,使用web處理,到upstream就匹配到abc.com,這里直接轉換成IP進行轉發(fā)。假如abc.com是在另一臺nginx下配置的,ip為10.10.10.10,則$proxy_host則對應為10.10.10.10。此時相當于設置了Host為10.10.10.10。如果想讓Host是abc.com,則進行如下設置:

proxy_set_header Host abc.com;

?

如果不想改變請求頭“Host”的值,可以這樣來設置:

?proxy_set_header Host? $http_host;

?

但是,如果客戶端請求頭中沒有攜帶這個頭部,那么傳遞到后端服務器的請求也不含這個頭部。 這種情況下,更好的方式是使用$host變量——它的值在請求包含“Host”請求頭時為“Host”字段的值,在請求未攜帶“Host”請求頭時為虛擬主機的主域名:

?proxy_set_header Host? $host;

?

此外,服務器名可以和后端服務器的端口一起傳送:

?proxy_set_header Host? ?$host:$proxy_port;

?

如果某個請求頭的值為空,那么這個請求頭將不會傳送給后端服務器:

?proxy_set_header Accept-Encoding "";

?

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務立即開通 >