有些應用需要驗證請求和響應的頭部信息。而現在的架構基本都會在前端使用nginx進行轉發。如果沒有處理頭部信息,就會導緻信息丢失,無法通過驗證,出現403等請求異常的情況。
proxy_set_header和add_header是nginx處理頭部信息的指令
後端需要獲取真實的遠端IP,可以通過X-Real-IP進行設置
proxy_set_header X-Real-IP $remote_addr;
X-Real-IP是一個自定義頭。X-Real-Ip 通常被 HTTP 代理用來表示與它産生 TCP 連接的設備 IP,這個設備可能是其他代理,也可能是真正的請求端。需要注意的是,X-Real-Ip 目前并不屬于任何标準,代理和 Web 應用之間可以約定用任何自定義頭來傳遞這個信息
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
X-Forwarded-For 是一個擴展頭。HTTP/1.1(RFC 2616)協議并沒有對它的定義,它最開始是由 Squid 這個緩存代理軟件引入,用來表示 HTTP 請求端真實 IP,現在已經成為事實上的标準,被各大 HTTP 代理、負載均衡等轉發服務廣泛使用,并被寫入 RFC 7239(Forwarded HTTP Extension)标準之中.
X-Forwarded-For請求頭格式非常簡單: X-Forwarded-For:client, proxy1, proxy2
也有可能需要再處理域名,也需要講Host字段傳遞給後端
proxy_set_header Host $host;
add_header是nginx響應給浏覽器的頭部信息
将後端的請求頭,返回到浏覽器中
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
頭信息限制nginx對頭部信息做了限制,不能含有下劃線,可以用駝峰式的命名,或者用 - ,如果含有下劃線的頭信息默認會直接被丢棄。
也可以通過設置參數修改這個限制,直接http配置節加上
underscores_in_headers on;
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!