自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Nginx 轉(zhuǎn)發(fā)時的一個坑,運維居然讓我背鍋!

運維 服務器運維
最近遇到一個 Nginx 轉(zhuǎn)發(fā)的坑,一個請求轉(zhuǎn)發(fā)到 Tomcat 時發(fā)現(xiàn)有幾個 http header 始終獲取不到,導致線上出現(xiàn) bug,運維說不是他的問題,這個鍋我背了。

[[356605]]

最近遇到一個 Nginx 轉(zhuǎn)發(fā)的坑,一個請求轉(zhuǎn)發(fā)到 Tomcat 時發(fā)現(xiàn)有幾個 http header 始終獲取不到,導致線上出現(xiàn) bug,運維說不是他的問題,這個鍋我背了。

新增的幾個 header 是這樣的:

  • accept_sign
  • accept_token
  • ...

反復檢查代碼,確定這些 header 是傳了的,而且本地測試單獨在 tomcat 中是可以接受到這些參數(shù)的,所以 tomcat 和命名本身是沒問題的,初步斷定是 Nginx 的問題。

經(jīng)過一翻搜索,終于找到了一個 Nginx 的配置參數(shù):underscores_in_headers,這個參數(shù)默認值為:off,即默認忽略帶下劃線的 header。

解決方案:

1、在 http 或者 server 配置中把 underscores_in_headers 配置參數(shù)開關(guān)打開:

  1. server { 
  2.   ... 
  3.   underscores_in_headers on
  4.   ... 

增加配置后,然后重啟 Nginx。

2、使用破折號(-)代替下劃線(_),或者統(tǒng)一規(guī)范直接不要使用下劃線;

我們來看下一般的 http header 長什么樣的:

一般所見的 headers 確實也都是中杠線,沒有下劃線。

Nginx 為什么默認忽略帶下劃線 header?

我找到了 Nginx 的官方說明:

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/?highlight=underscores#missing-disappearing-http-headers

If you do not explicitly set underscores_in_headers on;, NGINX will silently drop HTTP headers with underscores (which are perfectly valid according to the HTTP standard). This is done in order to prevent ambiguities when mapping headers to CGI variables as both dashes and underscores are mapped to underscores during that process.

根據(jù)官方說明,這樣做是為了避免把 headers 映射為 CGI 變量時出現(xiàn)歧義,因為破折號和下劃線都會被映射為下劃線,所以兩者不好區(qū)分……

好吧,終于弄清楚了,這個問題也太變態(tài)了,這應該是 Nginx 設(shè)計時的一個缺陷吧,這個坑我替你們踩了!

所以,推薦大家使用第二種方案吧,統(tǒng)一規(guī)范 headers 不要使用下劃線,使用 Nginx 默認的配置即可,這樣可以盡量避免環(huán)境上的差異,以免后續(xù)帶來問題。

本文轉(zhuǎn)載自微信公眾號「Java技術(shù)?!?,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java技術(shù)棧公眾號。

 

責任編輯:武曉燕 來源: Java技術(shù)棧
相關(guān)推薦

2019-08-27 08:55:05

2019-09-16 17:08:12

運維AIOpsIT運營

2018-10-19 16:35:20

運維

2017-09-25 10:52:27

2019-07-10 06:08:33

IT運維網(wǎng)絡故障故障排除

2018-05-02 14:30:33

數(shù)據(jù)庫運維優(yōu)化故障

2018-05-08 09:49:15

數(shù)據(jù)庫運維優(yōu)化

2018-03-23 09:43:09

2018-11-13 12:13:56

運維災備硬盤

2023-06-06 11:47:36

運維物力人力

2025-03-28 09:22:33

2019-12-10 10:28:47

運維架構(gòu)技術(shù)

2017-03-27 17:49:40

戴爾服務器

2011-01-10 14:24:35

CIO快樂運維

2022-04-06 10:36:24

技術(shù)管理

2024-11-11 17:24:09

2019-12-03 13:57:38

CIO背鍋IT

2018-06-29 10:36:29

阿里云互聯(lián)網(wǎng)故障

2019-02-14 13:30:54

內(nèi)存泄露運維

2017-12-03 12:37:00

運維wot智能
點贊
收藏

51CTO技術(shù)棧公眾號