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

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

當他訪問咱們的網站時出現瞭如下錯誤:chrome

可是我訪問一樣的地址卻沒有這個問題,連續訪問屢次,查看uWSGI日誌發現出現如下ERROR:瀏覽器

 

 

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

修改uwsgi.ini :增長:併發

  buffer-size = 32768網站

重啓uWSGI之後,用戶問題獲得解決.url

 

可是問題來了,爲何個人訪問沒有出現這個問題呢?或者上爲何用戶會遇到這個問題,接下來開始查找緣由:.net

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

用戶是先在頂級域名登陸後作了操做,有訪問咱們二級網站,就出現瞭如下情景:調試

在請求咱們的二級域名網站時使用了兩組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

相關文章
相關標籤/搜索