nginx的400錯誤比較難查詢原因,因為此錯誤並不是每次都會出現的,另外,出現錯誤的時候,通常在瀏覽器和日誌裡看不到任何有關提示。
經長時間觀察和大量試驗查明,此乃request header過大所引起,request過大,通常是由於cookie中寫入了較大的值所引起。
解決辦法這:
在nginx.conf中,將client_header_buffer_size和large_client_header_buffers都調大,可緩解此問題。
其中主要配置是client_header_buffer_size這一項,預設是1k,所以header小於1k的話是不會出現問題的。
#含義:設定使用者請求頭所使用的buffer大小
#(1)對絕大多數請求來說,1k足以滿足請求頭所需的buffer;
#(2)對於攜帶有較大cookie或來自於wap使用者的請求頭來說,1k的buffer一般不夠,這時可以使用指令large_client_header_buffers。
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
nginx 400狀態碼排查
最近,發現主站nginx的log中有很多400的錯誤,每天有幾千萬條,故決定對產生400錯誤的原因進行排查。分析nginx log,發現這種無效的400請求,總是在乙個正常訪問之後產生,一般出現乙個或者幾個。log格式如下 下面對這種情況進行分析 一,nginx 400狀態碼含義 上面是http1....
記一次Nginx 400錯誤
在乙個非cdn的網域名稱下有乙個頁面,需要請求cdn網域名稱下的資源。所以在cdn的那臺源站的nginx上設定了 add header access control allow headers x requested with add header access control allow meth...
記一次Nginx 400錯誤
在乙個非cdn的網域名稱下有乙個頁面,需要請求cdn網域名稱下的資源。所以在cdn的那臺源站的nginx上設定了 add header access control allow headers x requested with add header access control allow meth...