最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx 處理超長(zhǎng) Cookie 導(dǎo)致的 400 錯(cuò)誤

 更新時(shí)間:2026年04月20日 09:55:42   作者:冰川箭仙  
本文主要介紹了Nginx 處理超長(zhǎng) Cookie 導(dǎo)致的 400 錯(cuò)誤,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

當(dāng)用戶(hù) Cookie 過(guò)長(zhǎng)(例如含大量跟蹤參數(shù)、登錄態(tài)或前端埋點(diǎn)數(shù)據(jù)),Nginx 默認(rèn)的 client_header_buffer_size(通常為 1k 或 4k)可能不足以容納完整的請(qǐng)求頭,導(dǎo)致直接返回 400 Bad Request,且日志中常出現(xiàn) client sent too large header 或 too long URI 類(lèi)似提示——這不是應(yīng)用層問(wèn)題,而是 Nginx 在解析 HTTP 請(qǐng)求頭階段就拒絕了連接。

問(wèn)題現(xiàn)象

400 Bad Request
Request Header Or Cookie Too Large

這是 Nginx 默認(rèn)安全限制觸發(fā)的錯(cuò)誤,當(dāng) HTTP 請(qǐng)求頭(特別是 Cookie)超過(guò)配置閾值時(shí)返回。

根本原因

Nginx 有幾個(gè)關(guān)鍵配置參數(shù)控制請(qǐng)求頭大?。?/p>

參數(shù)默認(rèn)值作用
large_client_header_buffers4 8k大請(qǐng)求頭緩沖區(qū)大小和數(shù)量
client_header_buffer_size1k初始請(qǐng)求頭緩沖區(qū)大小
client_max_body_size1m請(qǐng)求體最大大小

觸發(fā)條件

  • 單個(gè) Cookie 過(guò)大(如存儲(chǔ) JWT、大量用戶(hù)數(shù)據(jù))
  • Cookie 數(shù)量過(guò)多(如第三方統(tǒng)計(jì)腳本堆積)
  • 請(qǐng)求頭總大小超過(guò)緩沖區(qū)限制

解決方案

方案一:調(diào)整 Nginx 緩沖區(qū)配置(推薦)

http {
    # 增大初始緩沖區(qū)到 4KB
    client_header_buffer_size 4k;
    # 設(shè)置大請(qǐng)求頭緩沖區(qū):4個(gè)8KB緩沖區(qū)(最大32KB)
    large_client_header_buffers 4 8k;
    # 或者更大(根據(jù)實(shí)際需求)
    # large_client_header_buffers 8 16k;  # 最大128KB
    include /etc/nginx/conf.d/*.conf;
}

針對(duì)特定站點(diǎn)(Server 塊配置):

server {
    listen 80;
    server_name example.com;
    # 為該站點(diǎn)單獨(dú)設(shè)置更大的限制
    client_header_buffer_size 8k;
    large_client_header_buffers 4 16k;
    location / {
        proxy_pass http://backend;
    }
}

方案二:清理/優(yōu)化 Cookie(治本)

如果 Cookie 過(guò)大是因?yàn)闃I(yè)務(wù)邏輯問(wèn)題,建議從源頭解決:

// 前端:避免存儲(chǔ)過(guò)多數(shù)據(jù)到 Cookie
// ? 錯(cuò)誤做法:將大量數(shù)據(jù)存 Cookie
document.cookie = "userData=" + JSON.stringify(hugeObject);
// ? 正確做法:Cookie 只存會(huì)話ID,數(shù)據(jù)存 localStorage/后端
document.cookie = "sessionId=" + sessionId;  // 僅少量關(guān)鍵數(shù)據(jù)

常見(jiàn) Cookie 瘦身場(chǎng)景

  • JWT Token 過(guò)長(zhǎng) → 使用 Refresh Token 機(jī)制
  • 存儲(chǔ)用戶(hù)權(quán)限列表 → 改為存用戶(hù)ID,權(quán)限放后端緩存
  • 第三方腳本(GA、百度統(tǒng)計(jì)等)Cookie 堆積 → 定期清理

方案三:刪除特定過(guò)大的 Cookie

如果無(wú)法立即修改代碼,可用 Nginx 攔截處理:

server {
    listen 80;
    server_name example.com;
    # 刪除特定的超大 Cookie(正則匹配)
    if ($http_cookie ~* "oversized_cookie=[^;]+") {
        set $new_cookie $http_cookie;
        # 復(fù)雜處理需要 Lua 模塊或外部腳本
    }
    # 或使用第三方模塊 ngx_http_rewrite_module 清理
    more_clear_headers Cookie;  # 需要 headers-more-nginx-module
}

方案四:使用 Lua 模塊精確處理(OpenResty)

server {
    listen 80;
    access_by_lua_block {
        local cookie = ngx.var.http_cookie
        if cookie and #cookie > 8192 then  -- Cookie 超過(guò) 8KB
            -- 只保留必要的會(huì)話 Cookie
            local new_cookie = ngx.re.match(cookie, "session=[^;]+")
            if new_cookie then
                ngx.req.set_header("Cookie", new_cookie[0])
            end
        end
    }
    proxy_pass http://backend;
}

參數(shù)詳解與計(jì)算

large_client_header_buffers 4 8k;
# 含義:
# - 4:緩沖區(qū)數(shù)量(最多同時(shí)處理4個(gè)大請(qǐng)求頭)
# - 8k:每個(gè)緩沖區(qū)大小
# - 總?cè)萘?= 4 × 8k = 32KB(單個(gè)請(qǐng)求頭最大)

如何選擇數(shù)值?

場(chǎng)景推薦配置
普通網(wǎng)站4 8k(默認(rèn)或略增)
有 JWT 認(rèn)證4 16k 或 8 8k
企業(yè)級(jí)應(yīng)用/大量權(quán)限數(shù)據(jù)8 32k
極端情況(臨時(shí)方案)8 64k(不建議長(zhǎng)期使用)

驗(yàn)證與調(diào)試

1. 查看當(dāng)前請(qǐng)求頭大小

# 查看 Nginx 錯(cuò)誤日志確認(rèn)問(wèn)題
tail -f /var/log/nginx/error.log
# 典型錯(cuò)誤信息:
# client sent too long header line: "Cookie: ..."

2. 測(cè)試 Cookie 大小

# 發(fā)送大 Cookie 測(cè)試
curl -H "Cookie: $(python3 -c 'print("x="+"A"*10000)')" \
     http://your-site.com

3. 檢查當(dāng)前配置

nginx -T | grep -E "(client_header|large_client)"

安全注意事項(xiàng)

?? 不要無(wú)限制增大緩沖區(qū)

# ? 危險(xiǎn)配置:容易遭受緩沖區(qū)溢出攻擊
large_client_header_buffers 100 1m;  # 100MB 總緩沖!

建議原則

  • 先嘗試清理 Cookie(治本)
  • 調(diào)整配置時(shí)遵循最小必要原則
  • 配合 limit_req 防止 DoS 攻擊
# 同時(shí)配置請(qǐng)求限制
http {
    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
    server {
        limit_req zone=req_limit burst=20 nodelay;
        large_client_header_buffers 4 16k;
    }
}

根據(jù)您的具體場(chǎng)景,建議優(yōu)先嘗試方案一快速恢復(fù)服務(wù),同時(shí)規(guī)劃方案二從根本上優(yōu)化 Cookie 設(shè)計(jì)。 

到此這篇關(guān)于Nginx 處理超長(zhǎng) Cookie 導(dǎo)致的 400 錯(cuò)誤的文章就介紹到這了,更多相關(guān)Nginx 處理超長(zhǎng)Cookie 400 錯(cuò)誤內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx做NodeJS應(yīng)用負(fù)載均衡配置實(shí)例

    Nginx做NodeJS應(yīng)用負(fù)載均衡配置實(shí)例

    這篇文章主要介紹了Nginx做NodeJS應(yīng)用負(fù)載均衡配置實(shí)例,本文直接給出配置實(shí)例,需要的朋友可以參考下
    2015-01-01
  • nginx如何實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈

    nginx如何實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈

    這篇文章主要為大家介紹了nginx實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Nginx泛解析到子目錄后自動(dòng)判斷有無(wú)public目錄詳解

    Nginx泛解析到子目錄后自動(dòng)判斷有無(wú)public目錄詳解

    這篇文章主要給大家介紹了關(guān)于Nginx泛解析到子目錄后自動(dòng)判斷有無(wú)public目錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Nginx平滑升級(jí)的詳細(xì)操作方法

    Nginx平滑升級(jí)的詳細(xì)操作方法

    這篇文章主要介紹了Nginx平滑升級(jí)的詳細(xì)操作方法,適應(yīng)編譯安裝ningx的情況,yum安裝的直接用yum更新即可,需要的朋友可以參考下
    2014-03-03
  • nginx文件上傳限制以及超時(shí)無(wú)響應(yīng)問(wèn)題的解決

    nginx文件上傳限制以及超時(shí)無(wú)響應(yīng)問(wèn)題的解決

    小編最近開(kāi)發(fā)前后端分離項(xiàng)目遇到一些問(wèn)題,后端服務(wù)是基于80/443端口反向代理的,所以請(qǐng)求會(huì)經(jīng)過(guò)nginx網(wǎng)關(guān),然后將請(qǐng)求代理到后端服務(wù),這是開(kāi)發(fā)環(huán)境,所以本文小編給大家介紹了解決nginx文件上傳限制和超時(shí)無(wú)響應(yīng),需要的朋友可以參考下
    2025-04-04
  • Linux環(huán)境下nginx搭建簡(jiǎn)易圖片服務(wù)器

    Linux環(huán)境下nginx搭建簡(jiǎn)易圖片服務(wù)器

    這篇文章主要介紹了Linux環(huán)境下nginx搭建簡(jiǎn)易圖片服務(wù)器,需要的朋友可以參考下
    2014-10-10
  • nginx文件上傳下載控制的實(shí)現(xiàn)示例

    nginx文件上傳下載控制的實(shí)現(xiàn)示例

    本文主要介紹了nginx文件上傳下載控制的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Nginx配置檢測(cè)服務(wù)狀態(tài)的實(shí)現(xiàn)方法

    Nginx配置檢測(cè)服務(wù)狀態(tài)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Nginx配置檢測(cè)服務(wù)狀態(tài)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 關(guān)于Nginx服務(wù)器可視化配置問(wèn)題

    關(guān)于Nginx服務(wù)器可視化配置問(wèn)題

    Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行,這篇文章主要介紹了Nginx服務(wù)器可視化配置,需要的朋友可以參考下
    2022-10-10
  • Nginx負(fù)載均衡配置簡(jiǎn)單配置方法

    Nginx負(fù)載均衡配置簡(jiǎn)單配置方法

    Nginx作為負(fù)載均衡服務(wù)器,用戶(hù)請(qǐng)求先到達(dá)nginx,再由nginx根據(jù)負(fù)載配置將請(qǐng)求轉(zhuǎn)發(fā)至不同的Web服務(wù)器。下面通過(guò)本文給大家分享Nginx負(fù)載均衡配置簡(jiǎn)單配置方法,需要的的朋友參考下吧
    2017-08-08

最新評(píng)論

苗栗市| 日土县| 海淀区| 宜良县| 娱乐| 乌拉特中旗| 黑山县| 秭归县| 建水县| 荥经县| 高陵县| 张家川| 板桥市| 大洼县| 连南| 娱乐| 宁陕县| 乌鲁木齐市| 东乡族自治县| 微山县| 福清市| 顺义区| 遵义市| 新干县| 隆尧县| 云南省| 泰顺县| 山丹县| 两当县| 前郭尔| 镇宁| 安乡县| 河间市| 辰溪县| 平山县| 竹溪县| 柞水县| 翁牛特旗| 甘德县| 锡林郭勒盟| 商南县|