问题
项目部署在coents 7上使用nginx做转发,发现出现以下的问题
- 一个600多KB的gif图片,显示不出来,刷新7-8次才能出来
F12 打开控制台发现返回状态206 “partial content”,貌似是大文件实现断电续传,没有接收完数据终止了
HTTP状态码206表示Partial Content,表示服务器已成功处理了部分GET请求。这通常是因为客户端发起了一个范围请求(Range Request),请求服务器发送文件的一部分。
您那边如果使用的Nginx,可尝试再反向代理配置加下面参数然后重新访问试试:
解决方法
### 在nginx配置中 添加以下配置
proxy_buffer_size 128k;
proxy_buffers 32 128k;
proxy_busy_buffers_size 128k;
- 重载一下nginx文件几兆都不会超时了
- img或大文件js都会生效
如果用的宝塔面板反向代理就放到 /www/server/nginx/conf/proxy.conf里面
宝塔面板日志里面出现很多304状态,响应大小
这个是访问你的服务器上的资源,设置了缓存后就不再使用get请求,返回304 ,不再访问服务器上资源,直接返回给缓存数据,因此相应大小是0
我的文件有点大,基本都是6M
针对您提供的Nginx配置,如果您处理的文件大小主要是6M,并且您希望优化Nginx的代理性能,以下是一些建议的优化措施:
- 增加代理缓冲区大小:
由于您处理的文件较大,可以考虑增加缓冲区的大小来减少磁盘I/O操作。但是,也要确保服务器有足够的内存来支持这些更改。
proxy_buffer_size 256k; # 初始缓冲区大小
proxy_buffers 8 256k; # 缓冲区数量和大小
proxy_busy_buffers_size 256k; # 保留在内存中的最大数据量
2.调整临时文件写入大小:
如果您发现磁盘I/O是一个瓶颈,可以尝试增加proxy_temp_file_write_size
的值。但是,过大的值可能会导致系统调用延迟,所以要根据实际硬件和系统性能来调整。
proxy_temp_file_write_size 1m; # 写入临时文件的大小
3.超时设置:
根据您的网络环境和上游服务器的性能,适当调整proxy_connect_timeout
、proxy_read_timeout
和proxy_send_timeout
的值。如果网络延迟较高或上游服务器响应较慢,可能需要增加这些值。
4.调整客户端请求体缓冲区大小:
如果您的客户端上传的数据也比较大,可能需要调整client_body_buffer_size
。
client_body_buffer_size 1m; # 客户端请求体的缓冲区大小
代理的是6m左右ts视频文件,你设置为proxy_temp_file_write_size 1m; 可行吗?
当您代理的是大约6MB大小的TS视频文件时,将proxy_temp_file_write_size
设置为1MB通常是可行的,并且可能是一个合适的值。这个设置指定了Nginx在写入临时文件时每次写入的数据块大小。
对于6MB的文件,Nginx可能会将其分割成几个数据块进行写入,每个数据块的大小由proxy_temp_file_write_size
指定。将其设置为1MB意味着每次写入操作会处理最多1MB的数据。这个值对于大多数系统来说是合理的,并且可以帮助平衡磁盘I/O操作的效率和性能。
然而,需要注意的是,实际的性能优化可能还取决于其他因素,如磁盘速度、系统负载和网络带宽等。如果您发现磁盘I/O成为瓶颈,您可以考虑使用更快的存储设备(如SSD)或优化磁盘访问模式。
此外,确保您的Nginx服务器具有足够的磁盘空间来存储临时文件和缓存文件。代理大文件时,临时文件和缓存文件可能会占用较多的磁盘空间。
遇到的“206未加载完的提示”,这不一定表示有问题。实际上,在流媒体播放中,206响应是预期的行为,因为视频播放器会持续请求视频的不同部分来保持播放的连续性。但是,如果您观察到视频播放存在卡顿或加载不完整的问题,那么您可能需要检查
nginx 反向代理大文件上传参数优化
下面的没有测试,但是好像用了最后一点代码
location ^~ /
{
proxy_pass http://127.0.0.1:666;
#强制响应 range 请求,对客户端返回 Accept-Ranges 响应标头及相关 206 状态码
proxy_force_ranges on;
proxy_set_header Range $http_range;
proxy_set_headerIf-Range $http_if_range;
proxy_redirect off;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
# 大文件超时优化
proxy_connect_timeout 86400s;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
send_timeout 86400s;
proxy_buffering off;
client_max_body_size 0;
proxy_request_buffering off;
proxy_socket_keepalive on;
}
这样,在处理文件上传的场景中,就不会因超时、文件太大,缓存太大等各种意外原因失败了,全改为边读边发,无缓存。