nginx爲了實現反向代理的需求而增加了一個ngx_http_proxy_module模塊。其中proxy_set_header指令就是該模塊需要讀取的配置文件。在這裏,所有設置的值的含義和http請求同中的含義完全相同,除了Host外還有X-Forward-For。
Host的含義是表明請求的主機名,因爲nginx作爲反向代理使用,而如果後端真是的服務器設置有類似防盜鏈或者根據http請求頭中的host字段來進行路由或判斷功能的話,如果反向代理層的nginx不重寫請求頭中的host字段,將會導致請求失敗【默認反向代理服務器會向後端真實服務器發送請求,並且請求頭中的host字段應爲proxy_pass指令設置的服務器】。
同理,X_Forward_For字段表示該條http請求是有誰發起的?如果反向代理服務器不重寫該請求頭的話,那麼後端真實服務器在處理時會認爲所有的請求都來在反向代理服務器,如果後端有防***策略的話,那麼機器就被封掉了。因此,在配置用作反向代理的nginx中一般會增加兩條配置,修改http的請求頭:
proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $remote_addr;
這裏的$http_host和$remote_addr都是nginx的導出變量,可以再配置文件中直接使用。如果Host請求頭部沒有出現在請求頭中,則$http_host值爲空,但是$host值爲主域名。因此,一般而言,會用$host代替$http_host變量,從而避免http請求中丟失Host頭部的情況下Host不被重寫的失誤。
nginx中proxy_set_header Host $host的作用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Nginx 安裝與配置規則入門
Lmagic16
2019-02-24 22:13:58
nginx+php執行請求的工作原理
xavier
2019-02-24 15:52:41
配置Nginx支持php,出現No input file specified錯誤的解決方法
lvqingpu
2019-02-24 13:15:35
深入 Nginx 之架構篇
jeffrey_up
2019-02-23 19:23:46
tcpdump查看Nginx長連接還是短連接
ouyangbro
2019-02-23 15:52:48
Nginx使用安裝(一)
flashhand
2019-02-23 13:58:28
nginx中gzip模塊
小紅帽子
2019-02-23 13:37:48
nginx+keepalived配置高可用HTTP羣集
小紅帽子
2019-02-23 13:37:48
Nginx服務之防盜鏈功能
兩袖春風
2019-02-23 13:28:22
寶塔面板 + Rancher + 阿里雲鏡像倉庫 + Docker + Kubernetes,添加集羣、部署 web 應用
燕小范
2019-02-23 13:20:14
nginx添加系統服務
braoshan
2019-02-23 13:15:21
Nginx簡易實用的php域名配置
wx5c6f5798d627c
2019-02-23 13:07:16
nginx日誌通過rsyslog傳入到日誌服務器指定目錄
郭雨明暄
2019-02-23 13:05:42
配置Ngnix作爲Web Server詳解
335729167
2019-02-23 13:00:44
nginx反向代理,URL重寫,讀寫分離
335729167
2019-02-23 13:00:11