1. 程式人生 > >invalid request block size: 4542 (max 4096)...skip引起的Nginx 502 Bad Geteway

invalid request block size: 4542 (max 4096)...skip引起的Nginx 502 Bad Geteway

ini 今天 cookie 分享 error 們的 用戶 百度首頁 height

今天有用戶報告了一個issue:

當他訪問我們的網站時出現了以下錯誤:

技術分享圖片

但是我訪問同樣的地址卻沒有這個問題,連續訪問多次,查看uWSGI日誌發現出現以下ERROR:

技術分享圖片

原來是請求頭的大小超出了uWSGI的buffer大小,默認時4K,我們沒有做過修改,既然不夠大,那就給大點唄,

修改uwsgi.ini :增加:

  buffer-size = 32768

重啟uWSGI以後,用戶問題得到解決.

但是問題來了,為什麽我的訪問沒有出現這個問題呢?或者上為什麽用戶會遇到這個問題,接下來開始查找原因:

我們的服務域名是二級域名: xxx.abc.com (域名涉及保密,這裏做了修改),公司還有一個網站是頂級域名:abc.com

用戶是先在頂級域名登錄後做了操作,有訪問我們二級網站,就出現了以下情景:

在請求我們的二級域名網站時使用了兩組cookie,第一組是頂級域名的cookie信息,第二組才是我們需要的本網站cookie信息:

在頂級域名中,cookie信息長度很長,個數還比較多,導致兩組cookie信息總大小超過了uWSGI的默認設置

技術分享圖片

為了方便理解,這裏用baidu做解釋:我們先請求www.baidu.com,可以訪問到百度首頁:然後在url欄點擊如下紅色標記(我用的是chrome瀏覽器):

技術分享圖片

可以看到這樣的結果:

技術分享圖片

這裏的baidi.com和www.baidu.com都指頂級域名,然後我們訪問百度貼吧:https://tieba.baidu.com/index.html

技術分享圖片

同樣點擊??圖標選擇cookie後看到如下結果:

技術分享圖片

和我們遇到的情況是一樣的,這是因為二級域名會共享頂級域名的cookie,在請求中一並發送,可以通過F12調試看到,我們刷新貼吧首頁的請求附帶的cookie信息:

技術分享圖片

其中一部分是頂級域名baidu.com的cookie:

技術分享圖片

另一部分是tieba.baidu.com的cookie信息:

這裏涉及到的更多知識點可以參考以下文章:

  https://blog.csdn.net/qq_32239417/article/details/62228624

invalid request block size: 4542 (max 4096)...skip引起的Nginx 502 Bad Geteway