解決,請求過大導致 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 這些設定限制,主要在於提升網站性能,避免不必要的資源佔用,讓網站訪問量可提升。