Nginx請求頭丟失的問題解決
1.問題
新增的幾個 header 參數(shù)是這樣的:
- api_key_id
- api_key_value
我配置有2層nginx轉發(fā),從機器A到機器B再到目標服務,遇到一個接口請求需要在header中傳遞api_key_id和api_key_value這2個參數(shù),但是在EC2機器上直接curl目標服務的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再到目標服務這個鏈路卻不行,這個鏈路的命令:
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都沒有問題,但是目標服務后端打印出來的參數(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ù)開關打開:
server { ... underscores_in_headers on; ... }
增加配置后,然后重啟 Nginx。
2、使用破折號(-)代替下劃線(_),或者統(tǒng)一規(guī)范直接不要使用下劃線;
一般所見的 headers 確實也都是中杠線,沒有下劃線。
本文最終選擇的是方案1,也就是增加配置: underscores_in_headers on;
到此這篇關于Nginx請求頭丟失的問題解決的文章就介紹到這了,更多相關Nginx請求頭丟失內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Nginx配置txt、pdf、doc、xls等文件直接下載的方法
這篇文章主要介紹了Nginx配置txt、pdf、doc、xls等文件直接下載的方法,配置方法很簡單,本文直接給出配置示例,需要的朋友可以參考下2015-04-04Nginx服務器中強制使用緩存的配置及緩存優(yōu)先級的講解
這篇文章主要介紹了Nginx服務器中強制使用緩存的配置及緩存優(yōu)先級的講解,一定程度上可以幫助大家解決Nginx不緩存或緩存失效的問題,需要的朋友可以參考下2016-01-01