Nginx請求頭丟失的問題解決
1.問題
新增的幾個 header 參數(shù)是這樣的:
- api_key_id
- api_key_value
我配置有2層nginx轉(zhuǎn)發(fā),從機器A到機器B再到目標服務(wù),遇到一個接口請求需要在header中傳遞api_key_id和api_key_value這2個參數(shù),但是在EC2機器上直接curl目標服務(wù)的api url是可以的,運行的命令:
curl -k -v -X GET 'https://676eea277d90484b8142-cn-heyuan-acdr-1-vpc.alicloudapi.com/v1/accounts/1248622328516666' --header 'api_key_id: 111923335' --header 'api_key_value: f540033e6cc8429f801dc2734ad261ea'
但是通過從機器A到機器B再到目標服務(wù)這個鏈路卻不行,這個鏈路的命令:
curl -k -v -X GET https://baidu.net/dev/tlpssp/uesrapi/v1/accounts/1248622328517708 -H "api_key_id:111923335" -H "api_key_value:f540033e6cc8429f801dc2734ad261ea"
總是返回401,檢查了配置location都沒有問題,但是目標服務(wù)后端打印出來的參數(shù),是沒有api_key_id和api_key_value這2個參數(shù)的。
猜測:
api_key_id和api_key_value這2個參數(shù)傳遞過程中丟失或則根本沒傳遞
2.解決
于是各種google發(fā)現(xiàn),是nginx配置的問題,終于找到了一個 Nginx 的配置參數(shù):underscores_in_headers,這個參數(shù)默認值為:off,即默認忽略帶下劃線的 header。
最終解決方案:
1、在 http 或者 server 配置中把 underscores_in_headers 配置參數(shù)開關(guān)打開:
server {
...
underscores_in_headers on;
...
}增加配置后,然后重啟 Nginx。
2、使用破折號(-)代替下劃線(_),或者統(tǒng)一規(guī)范直接不要使用下劃線;

一般所見的 headers 確實也都是中杠線,沒有下劃線。
本文最終選擇的是方案1,也就是增加配置: underscores_in_headers on;
到此這篇關(guān)于Nginx請求頭丟失的問題解決的文章就介紹到這了,更多相關(guān)Nginx請求頭丟失內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx index指令使用及設(shè)置網(wǎng)站默認首頁
index指令用于指定處理請求時使用的默認文件,本文主要介紹了Nginx index指令使用及設(shè)置網(wǎng)站默認首頁,具有一定的參考價值,感興趣的可以了解一下2024-07-07
在Nginx中配置image filter模塊來實現(xiàn)動態(tài)生成縮略圖
這篇文章主要介紹了在Nginx中配置image filter模塊來實現(xiàn)動態(tài)生成縮略圖的方法,包括縮略圖尺寸的設(shè)置等方面的介紹,需要的朋友可以參考下2015-12-12
nginx通過location配置代理的原理和實現(xiàn)方式
這篇文章主要介紹了nginx通過location配置代理的原理和實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03

