Nginx HTTPS代理大文件加載失敗的排查與解決方案
一、問題背景
今日運(yùn)維人員告知我,突然網(wǎng)站的登錄頁訪問變白屏,我登錄后臺(tái)發(fā)現(xiàn)服務(wù)一切正常,Nginx也正常運(yùn)行,我嘗試訪問網(wǎng)站登錄頁,并連點(diǎn)十幾次會(huì)訪問正常,之后就會(huì)正常,但是登錄以后也會(huì)某些頁面存在白屏狀態(tài),查看瀏覽器請(qǐng)求發(fā)現(xiàn)某些JS、CSS文件沒有正常返回,Nginx的訪問日志出現(xiàn)206等問題,想到前幾天剛續(xù)費(fèi)了HTTPS的域名證書,證書也換過了,然后切換到內(nèi)網(wǎng)HTTP發(fā)現(xiàn)正常,猜想應(yīng)該是Nginx中的HTTPS的配置有問題,緩存類配置可能存在問題。
二、問題現(xiàn)象
總結(jié)出現(xiàn)以下異常:
- HTTPS訪問登錄頁白屏,連續(xù)刷新20次后偶現(xiàn)正常;
- HTTP內(nèi)網(wǎng)訪問正常,無異常;
- 瀏覽器開發(fā)者工具顯示:大體積JS文件(如
chunk-vendors.js)加載失敗,狀態(tài)碼為206 Partial Content; - Nginx訪問日志記錄:
10.xx.xxx.90 - - 443 [25/Oct/2025:17:40:20 +0800] "GET /js/chunk-vendors.6112ac08.js HTTP/1.1" 206 1 "https://xxxx/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
三、問題定位與根因分析
1. 核心問題:Nginx代理緩沖區(qū)不足
(1)Nginx代理工作原理
當(dāng)Nginx作為反向代理時(shí),其處理上游響應(yīng)的流程如下:
- 接收后端服務(wù)返回的響應(yīng)數(shù)據(jù);
- 將數(shù)據(jù)緩存到內(nèi)存緩沖區(qū)中;
- 若緩沖區(qū)不足,則將數(shù)據(jù)寫入臨時(shí)文件(
proxy_max_temp_file_size控制); - 最終將數(shù)據(jù)發(fā)送給客戶端(瀏覽器)。
(2)默認(rèn)配置的限制
Nginx默認(rèn)配置的緩沖區(qū)大小為:
proxy_buffer_size 4k|8k; # 響應(yīng)頭緩沖區(qū) proxy_buffers 8 4k|8k; # 響應(yīng)體緩沖區(qū)(數(shù)量 × 大小) proxy_busy_buffers_size 8k|16k; # 忙碌時(shí)可發(fā)送的最大緩沖區(qū)
- 總緩沖容量:
8 × 4k = 32KB,不足以承載1~2MB的前端資源; - HTTPS加重問題:TLS加密/解密消耗更多CPU資源,導(dǎo)致緩沖區(qū)更容易被撐滿;
- 206狀態(tài)碼的含義:
Partial Content,表示響應(yīng)未完整傳輸,Nginx在臨時(shí)文件寫入過程中可能因超時(shí)或中斷導(dǎo)致加載失敗。
(3)為何HTTP正常?
HTTP無需加密,Nginx處理速度更快,緩沖區(qū)在短時(shí)間內(nèi)能完成數(shù)據(jù)傳輸,因此未觸發(fā)問題。
四、解決方案與配置說明
1. 調(diào)整Nginx代理緩沖區(qū)參數(shù)
在Nginx配置文件的http塊中添加以下配置:
# 增加內(nèi)存緩沖區(qū)大小,避免寫入臨時(shí)文件 proxy_buffer_size 128k; # 存儲(chǔ)響應(yīng)頭(含Cookie/CSP等) proxy_buffers 32 128k; # 存儲(chǔ)響應(yīng)體(32 × 128k = 4MB) proxy_busy_buffers_size 128k; # 忙碌時(shí)最大發(fā)送緩沖區(qū)
參數(shù)詳解:
| 參數(shù) | 作用 | 推薦值 | 說明 |
|---|---|---|---|
proxy_buffer_size | 響應(yīng)頭緩沖區(qū) | 128k | 確保大頭信息(如Cookie、CSP)完整加載 |
proxy_buffers | 響應(yīng)體緩沖區(qū) | 32 × 128k | 總?cè)萘?MB,覆蓋常見前端資源大小 |
proxy_busy_buffers_size | 忙碌時(shí)發(fā)送緩沖區(qū) | 128k | 避免緩沖區(qū)爭用導(dǎo)致發(fā)送中斷 |
? 生效范圍:配置應(yīng)放在http塊中全局生效,或針對(duì)特定server/location塊。
2. 重載Nginx配置
# 檢查配置語法 sudo nginx -t # 重載配置 sudo nginx -s reload
五、驗(yàn)證與測試
清除瀏覽器緩存之后重新訪問,一切正常,問題解決。
到此這篇關(guān)于Nginx HTTPS代理大文件加載失敗的排查與解決方案的文章就介紹到這了,更多相關(guān)Nginx HTTPS代理大文件加載失敗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CentOS7安裝Nginx并配置自動(dòng)啟動(dòng)的方法步驟
這篇文章主要介紹了CentOS7安裝Nginx并配置自動(dòng)啟動(dòng)的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
Nginx配置HTTP強(qiáng)制跳轉(zhuǎn)到HTTPS的解決辦法
這篇文章主要給大家介紹了關(guān)于Nginx配置HTTP強(qiáng)制跳轉(zhuǎn)到HTTPS的解決辦法,當(dāng)Nginx配置https后通常需要將用戶http請(qǐng)求強(qiáng)制跳轉(zhuǎn)到https,需要的朋友可以參考下2023-08-08
Nginx正反向代理及負(fù)載均衡等功能實(shí)現(xiàn)配置代碼實(shí)例
?Nginx Ingress網(wǎng)關(guān)吞吐量極限測試全過程
Nginx與后臺(tái)應(yīng)用端口沖突的解決方案
Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析

