Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Apache 「Request Header Field Exceeds Server Limit」錯誤解決方案

編輯:關於伺服器

錯誤訊息

Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.

根因分析

HTTP 請求標頭 (Header) 超過 Apache 預設限制 (8190 bytes)。常見於:

  • Cookie 過大 (單一 Cookie > 4KB、總大小 > 8KB)
  • 大量自訂 Header
  • 認證 Token 過長 (JWT、SAML)
  • CDN/WAF 轉發添加的 X-Forwarded-* 標頭累積

核心指令說明

指令預設值控制對象
LimitRequestFieldSize8190單一 Header 欄位最大位元組數
LimitRequestFields100Header 欄位總數上限
LimitRequestLine8190請求行 (Method + URI + Version) 最大長度
LimitRequestBody0 (無限制)請求實體內容最大長度

解決方案:調大限制

# httpd.conf 或 VirtualHost 內
LimitRequestFieldSize 16380
LimitRequestLine 16380
LimitRequestFields 200

# 若使用 mod_proxy 轉發,也需在 Proxy 端設定
ProxyIOBufferSize 16384

驗證方式

# 測試大 Header
curl -H "X-Custom-Header: $(printf 'A%.0s' {1..10000})" https://localhost/

# 檢查實際限制
httpd -V | grep LIMIT_REQUEST

避坑指南

  • 不要盲目調大:過大限制易遭受 DoS 攻擊 (大量大 Header 佔用記憶體)
  • 源頭治理:壓縮 Cookie、縮短 Token、移除冗餘 Header
  • CDN/WAF 層面處理:在邊緣節點合併/過濾 Header,再轉發給源站
  • 模組衝突:mod_security 可能有獨立限制,需同步調整 SecRequestBodyLimit、SecRequestBodyNoFilesLimit

Nginx 對應配置 (參考)

# http 區塊
large_client_header_buffers 4 16k;
client_header_buffer_size 1k;

安全性考量

RFC 7230 建議伺服器至少支援 8000 字元請求行。調大至 16K-32K 通常安全,超過 64K 需評估記憶體風險。生產環境建議搭配 mod_security 或 WAF 限制異常請求。

Copyright © Windows教程網 All Rights Reserved