解決,請求過大導致 The request record is too big
Nignx & PHP-FPM 架構中,發送單一請求若header傳輸量過大,就會爆出 request record is too big 的錯誤,
可以檢查是否直接透過http params 方式來夾帶參數
當參數過大,就會導致內容無法送達而爆出錯誤。
只要改變傳輸的方式就會正常。
原因說明:
在正常預設的主機伺服架構,初始限制都不會設定太高,其中包括各種傳輸 size, buffer。
Nginx 可以透過 client_header_buffer_size, client_header_timeout, client_header_buffer_size, client_max_body_size… 等方式,來變更傳輸量。
但是,當 Nginx 取得連線,轉導向 PHP-FPM FastCGI 時,
由於在單一連線 fastcgi_buffer_size record 限制最多 64K 傳輸量,
當請求的紀錄過大,就會造成 request record is too big 的錯誤
由於這項參數是直死些寫在架構中,無法透過參數調整,因此,解決的方式就必須要改變傳輸的方式。
將client 的請求方式變更為 form_params, body, json 等方式來進行傳輸,就能正常。
備註
FastCGI 這些設定限制,主要在於提升網站性能,避免不必要的資源佔用,讓網站訪問量可提升。