Nginx proxy_set_header配置方式
Nginx proxy_set_header配置
HOST配置詳解及其應用
1.1 配置表
如下表所示:
變量值 | 攜帶端口 | 描述 | 配置示例 |
http_host | √ | 轉發(fā)時會完整轉發(fā)ip+port | proxy_set_header Host $http_host |
proxy_host | √ | 80不攜帶,其他端口攜帶 | proxy_set_header Host $proxy_host |
host | × | 僅攜帶host | proxy_set_header Host $host |
1.2 應用講解
1. 一般nginx做轉發(fā)的時候配置http_host即可
2. 如果遇到下圖所示的場景時,也就是域名指向一個服務器,由那個服務器根據(jù)不同的端口進行轉發(fā)到各自的應用服務器,甚至出現(xiàn)多級的跳轉情況,我們假定域名指向端口是8000應用服務器A端口對于nginx域名的端口接受是 9000 , 應用服務A提供的服務端口是 7000。對于A服務被請求的端口是9000, 實際用戶使用的是8000,那么就會出現(xiàn)302 資源重定向?qū)е碌臒o法找到的問題。
故在一級甚至多級跳轉的時候需要考慮這個問題。
Nginx: proxy_set_header與add_header區(qū)別
proxy_set_header
1)概述
proxy_set_header 和 add_header 是 Nginx 配置中兩個不同的指令, 它們各自有不同的用途
proxy_set_header 指令用于修改轉發(fā)到代理服務器(通常是后端應用服務器)的 HTTP 請求頭
它允許您設置或覆蓋請求頭中的字段,以便后端服務器能夠接收正確的信息或根據(jù)這些信息做出響應
例如,有時可能會使用 proxy_set_header 來設置 Host 頭,這樣后端服務器就知道它正在為哪個域名提供服務
有時候,還可以設置 X-Real-IP 和 X-Forwarded-For 頭來傳遞客戶端的真實 IP 地址和請求鏈中的代理信息
示例:
location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
add_header
1)概述
add_header 指令用于向 Nginx 發(fā)出的 HTTP 響應中添加或覆蓋響應頭字段
這通常用于添加自定義的頭部信息,如跨域資源共享(CORS)的頭部,或者為響應添加安全相關的頭部(如 X-Content-Type-Options)
2)示例
location / { # ... 其他配置 ... add_header X-Content-Type-Options nosniff; add_header X-Frame-Options DENY; add_header X-XSS-Protection "1; mode=block"; }
兩者區(qū)別
- 方向:proxy_set_header 修改的是請求頭(request header),而 add_header 修改的是響應頭(response header)
- 目標:proxy_set_header 的目標是后端服務器,用于通知后端關于請求的一些信息;而 add_header 的目標是客戶端,用于向客戶端提供額外的信息或指令
- 使用場景:proxy_set_header 通常在反向代理配置中使用,確保后端服務器能正確處理請求;而 add_header 在需要向客戶端發(fā)送額外信息或增強安全性的情況下使用
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
nginx用正則表達式實現(xiàn)泛域名自動匹配目錄的方法
這篇文章主要介紹了nginx用正則表達式實現(xiàn)泛域名自動匹配目錄的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05nginx如何通過proxy_pass設置反向代理,隱藏端口號
這篇文章主要介紹了nginx如何通過proxy_pass設置反向代理,隱藏端口號方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01