通過Nginx的proxy_set_header設置請求頭無效的解決
背景
在基于nacos做服務發(fā)現(xiàn)時,需要做流量染色,主要是在流量的頭部加上一些標記,以便識別。
這里就利用到了Nginx的proxy_set_header來設置頭部。
問題
很多場景下,我們需要通過nginx設置請求頭,設置了一些自定義字段
如果帶下劃線,比如user_name這種
后端在進去獲取頭部信息時,發(fā)現(xiàn)取不到對應的值
原因&解決辦法
nginx源碼:
ngx_http_parse_header_line(ngx_http_request_t *r, ngx_buf_t *b,ngx_uint_t allow_underscores) if (ch == '_') { if (allow_underscores) { hash = ngx_hash(0, ch); r->lowcase_header[0] = ch; i = 1; } else { r->invalid_header = 1; } break; }
關(guān)鍵變量:
allow_underscores
,是否允許下劃線。
原來nginx對header name的字符做了限制,默認 underscores_in_headers 為off,表示如果header name中包含下劃線,則忽略掉。
解決辦法:
方法一:header中自定義變量名時不要用下劃線。
方法二:修改nginx.conf配置文件,加上underscores_in_headers on的配置,參考如下:
http { include mime.types; default_type application/octet-stream; sendfile on; underscores_in_headers on; keepalive_timeout 65; }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
權(quán)限問題導致Nginx 403 Forbidden錯誤的解決方法
這篇文章主要介紹了權(quán)限問題導致Nginx 403 Forbidden錯誤的解決方法,本文中導致 403 Forbidden錯誤的原因是配置文件中沒有指明一個用戶,需要的朋友可以參考下2014-08-08Windows系統(tǒng)中Nginx下載安裝部署教程(實測有效)
Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)中Nginx下載安裝部署的相關(guān)資料,需要的朋友可以參考下2024-08-0818個運維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢)
這篇文章主要介紹了18個運維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09Nginx解決Http慢攻擊(Slow HTTP Attack)的方法
緩慢的HTTP拒絕服務攻擊是一種專門針對于Web的應用層拒絕服務攻擊,本文給大家介紹了Nginx解決Http慢攻擊(Slow HTTP Attack)的方法,需要的朋友可以參考下2024-02-02在nginx中實現(xiàn)單位時間內(nèi)限制訪問頻率的教程
這篇文章主要介紹了在nginx中實現(xiàn)單位時間內(nèi)限制訪問頻率的教程,并非針對IP而是全局的訪問量限制,需要的朋友可以參考下2015-04-04nginx proxy_pass反向代理配置中url后加不加/的區(qū)別介紹
這篇文章主要給大家介紹了關(guān)于nginx proxy_pass反向代理配置中url后加不加/的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-11-11