net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) nginx转发记录
根据提供的错误信息和Nginx配置,问题可能源于代理缓冲区设置或上游服务器响应处理。以下是解决方案:
1. 调整代理缓冲区大小
当前配置可能不足以处理上游服务器响应,特别是大文件或高并发场景。调整如下:
location /engine {proxy_pass https://192.168.3.42:9001/engine;# 增加缓冲区大小和数量proxy_buffer_size 256k;proxy_buffers 64 256k;proxy_busy_buffers_size 512k;# 其他优化参数proxy_connect_timeout 60s;proxy_read_timeout 60s;proxy_send_timeout 60s;proxy_http_version 1.1;proxy_set_header Connection "";
}
2. 禁用代理缓冲(测试用)
临时禁用缓冲以确认是否为缓冲区问题:
location /engine {proxy_pass https://192.168.3.42:9001/engine;proxy_buffering off; # 禁用缓冲
}
(注意:生产环境慎用,可能增加上游服务器负载)
3. 检查上游服务器
- 确认上游服务器(192.168.3.42:9001)能正确处理
Range
请求(206状态码涉及分块传输)。 - 检查上游服务器日志,确认是否有超时或中断。
4. 增加超时时间
防止因网络延迟导致响应截断:
proxy_read_timeout 300s;
proxy_send_timeout 300s;
5. 完整配置示例
location /engine {proxy_pass https://192.168.3.42:9001/engine;# 缓冲区设置proxy_buffer_size 256k;proxy_buffers 64 256k;proxy_busy_buffers_size 512k;# 超时设置proxy_connect_timeout 60s;proxy_read_timeout 300s;proxy_send_timeout 300s;# HTTP版本和连接优化proxy_http_version 1.1;proxy_set_header Connection "";# 传递必要头部proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;
}
6. 其他排查建议
- 检查磁盘空间:确保Nginx服务器磁盘空间充足。
- 网络稳定性:确认到上游服务器的网络无丢包或延迟。
- 日志调试:在Nginx配置中增加错误日志级别:
重启Nginx后重现问题,查看详细错误日志。error_log /var/log/nginx/error.log debug;
总结
错误通常由代理缓冲区不足或上游服务器响应异常引起。优先调整缓冲区参数和超时设置,若问题仍存在需排查上游服务器状态和网络环境。