uwsgi部署到nginx出現invalid request block size: 4161 (max 4096)...skip問題(親測)

http://50vip.com/419.html

 

使用Flask製作一個網頁平臺之後,登陸使用openid登陸,然後使用uwsgi服務部署到nginx上,運行起來沒有什麼問題,但是偶爾在登陸的時候出現502的錯誤,一般登陸成功之後後面的任何操作都不會出錯。

查看uwsgi的log之後,發現出現這樣的一個錯誤:

invalid request block size: 4161 (max 4096)...skip

之前一個沒有去詳細搜索過,也沒有具體去看錯誤產生的原因,因爲只是偶爾出現,並且有時候重試的時候是可以登陸的,所以沒有太多的去關注,今天因爲在會議演示的過程中又出現這個問題,所以不得不重視了。

搜索一下,其實問題很簡單:url地址長度超過了4096個字符,而4096就是uwsgi配置中buffer-size的默認值,所以只需要將buffer-size改大一點即可。

我是使用uwsgi -x 指定uwsgi配置文件來啓動服務器的,所以只需要修改成以下方式啓動即可:

uwsgi -x platform.uwsgi.xml --buffer-size 32768

即在後面增加一個 --buffer-size 32768

 

問題基本就解決了,至於爲什麼這個問題是偶爾出現?那是因爲openid登陸的時候會攜帶一個參數叫next_url,這個地址是用來指定登陸成功之後返回到哪裏地址,如果這個next_url太長就會導致url地址超過4096,有時候next_url=/,即網站根地址,url地址長度就不會超過4096。另外還和openid返回的登陸人信息長度有關係,導致有些人從來不會出現這個錯誤,有些人偶爾出現這個問題。

來源:https://blog.csdn.net/hshl1214/article/details/47294657/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章