1. 程式人生 > >(轉)nginx做轉發時,帶'_'的header內容丟失

(轉)nginx做轉發時,帶'_'的header內容丟失

做了 scores 就是 use version 完成 所在 解決 sco

原本在測試環境測試通過的APP,今天準備切到線上環境做最後測試,結果發現了錯誤。查看日誌發現是APP端發送的http請求中的header內容丟失了。那麽代碼沒有改動,怎麽平白無故會丟失頭信息?
於是想到兩個環境的不同之處在於線上是通過nginx做的代理轉發,會不會是nginx搞的鬼?於是搜索“nginx request header 丟失”,果不其然是這個問題,nginx對下劃線的頭信息做了限制,找到問題所在就等於完成了一大半,辦法總比困難多。遂決定記錄之。
- 方法一:不用下劃線
既然nginx對下劃線不支持,那沒關系,不用下劃線就是了。比如原來”app_version”改成”app-version”就可以了。(難怪一般header的name都是’-‘來拼接的,比如”User-Agent”)
- 方法二:從根本接觸nginx的限制


nginx默認request的header的那麽中包含’_’時,會自動忽略掉。
解決方法是:在nginx裏的nginx.conf配置文件中的http部分中添加如下配置:
underscores_in_headers on; (默認 underscores_in_headers 為off)

(轉)nginx做轉發時,帶'_'的header內容丟失