Nginx HTTPS代理大文件加载失败的排查与解决方案

一、问题背景

今日运维人员告知我,突然网站的登录页访问变白屏,我登录后台发现服务一切正常,Nginx也正常运行,我尝试访问网站登录页,并连点十几次会访问正常,之后就会正常,但是登录以后也会某些页面存在白屏状态 ,查看浏览器请求发现某些JS、CSS文件没有正常返回 ,Nginx的访问日志出现206等问题 ,想到前几天刚续费了HTTPS的域名证书,证书也换过了,然后切换到内网HTTP发现正常,猜想应该是Nginx中的HTTPS的配置有问题,缓存类配置可能存在问题。

二、问题现象

总结出现以下异常:

  • HTTPS访问登录页白屏,连续刷新20次后偶现正常;

  • HTTP内网访问正常,无异常;

  • 浏览器开发者工具显示:大体积JS文件(如chunk-vendors.js)加载失败 ,状态码为206 Partial Content

  • Nginx访问日志记录:

    arduino 复制代码
    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代理缓冲区不足

(1)Nginx代理工作原理

当Nginx作为反向代理时,其处理上游响应的流程如下:

  1. 接收后端服务返回的响应数据;
  2. 将数据缓存到内存缓冲区中;
  3. 若缓冲区不足,则将数据写入临时文件(proxy_max_temp_file_size控制);
  4. 最终将数据发送给客户端(浏览器)。

(2)默认配置的限制

Nginx默认配置的缓冲区大小为:

nginx 复制代码
proxy_buffer_size 4k|8k;        # 响应头缓冲区
proxy_buffers 8 4k|8k;          # 响应体缓冲区(数量 × 大小)
proxy_busy_buffers_size 8k|16k; # 忙碌时可发送的最大缓冲区
  • 总缓冲容量8 × 4k = 32KB,不足以承载1~2MB的前端资源;
  • HTTPS加重问题:TLS加密/解密消耗更多CPU资源,导致缓冲区更容易被撑满;
  • 206状态码的含义Partial Content,表示响应未完整传输,Nginx在临时文件写入过程中可能因超时或中断导致加载失败。

(3)为何HTTP正常?

HTTP无需加密,Nginx处理速度更快,缓冲区在短时间内能完成数据传输,因此未触发问题。


四、解决方案与配置说明

1. 调整Nginx代理缓冲区参数

在Nginx配置文件的http块中添加以下配置:

nginx 复制代码
# 增加内存缓冲区大小,避免写入临时文件
proxy_buffer_size 128k;         # 存储响应头(含Cookie/CSP等)
proxy_buffers 32 128k;          # 存储响应体(32 × 128k = 4MB)
proxy_busy_buffers_size 128k;   # 忙碌时最大发送缓冲区

参数详解:

参数 作用 推荐值 说明
proxy_buffer_size 响应头缓冲区 128k 确保大头信息(如Cookie、CSP)完整加载
proxy_buffers 响应体缓冲区 32 × 128k 总容量4MB,覆盖常见前端资源大小
proxy_busy_buffers_size 忙碌时发送缓冲区 128k 避免缓冲区争用导致发送中断

生效范围 :配置应放在http块中全局生效,或针对特定server/location块。

2. 重载Nginx配置

bash 复制代码
# 检查配置语法
sudo nginx -t

# 重载配置
sudo nginx -s reload

五、验证与测试

清除浏览器缓存之后重新访问,一切正常,问题解决。


相关推荐
JoySSLLian3 小时前
手把手教你安装免费SSL证书(附宝塔/Nginx/Apache配置教程)
网络·人工智能·网络协议·tcp/ip·nginx·apache·ssl
一分半心动4 小时前
宝塔面板lnmp架构,tp6框架网站伪静态
nginx·php
全栈工程师修炼指南8 小时前
Nginx | stream 四层反向代理:SSL、PREREAD 阶段模块指令浅析与实践
运维·网络·网络协议·nginx·ssl
脏脏a11 小时前
告别物理出勤:Nginx 搭配 cpolar 实现远程开发无缝协作
运维·nginx
Dxy123931021621 小时前
413 Request Entity Too Large 原因与解决方案
nginx
CYpdpjRnUE21 小时前
光储一体机仿真模型搭建之旅
nginx
Volunteer Technology1 天前
FastDFS+Nginx
运维·nginx
qinyia1 天前
**使用AI助手在智慧运维中快速定位并修复服务异常:以Nginx配置错误导致502错误为例**
linux·运维·服务器·数据库·mysql·nginx·自动化
404Clukay1 天前
Windows Server 配置 Let‘s Encrypt 免费 HTTPS 证书(WACS + Nginx 自动化方案)
windows·nginx·https
一叶星殇1 天前
.NET6 解决 Nginx 反向代理后获取客户端真实 IP(始终显示网关 IP)问题
运维·服务器·nginx