一    缓冲区基础知识铺垫

①    proxy_temp_path

'1'表示层级1的目录名为1个数字(0-9);'2'表示层级2目录名为2个数字(00-99)

+++++++++++'遗留问题'+++++++++++

1)  存储时机-->'后端服务器response超出nginx侧的buffer配置',缓冲'存储不下'

2)  如果使用'本地'存储,则要考虑该'目录'分区容量的大小,避免'磁盘不可写'

②    proxy_buffering

proxy_uffering off 传输机制 

③    proxy_buffers

1) 这个指令用于设置'从被代理服务器读取应答内容'的缓存区的'数目'和'大小'

2) 数目可以'任意定',但是一个'缓存区的大小'一般就是'4k或者8k'

 

④    proxy_buffer_size

响应头太大报错 

'nginx侧报错':'error日志'得到-->'upstream sent too big header' while reading response header from upstream

'clinet端报错':client收到的是'502报错'

根因: '后端服务器'返回给nginx的header'太大',超出了'预设'值

⑤    proxy_busy_buffers_size

⑥   proxy_temp_file_write_size

重点:写入'temp_file'的频率'或者'颗粒度

 ⑦    proxy_max_temp_file_size

重点: 当buffer缓冲区'超过proxy_buffers+​proxy_buffer_size',然后通过'​proxy_temp_file_write_size​'频率就开始'刷写'磁盘

fastcgi同样引发上述的warn 

⑧    proxy_connect_timeout

备注:如果代理服务器在此时间内'未返回'任何内容,nginx将'返回504'给'client'

⑨    proxy_read_timeout

proxied server --> "被代理服务器[后端服务器]"

1.  该指令设置与代理服务器的'读超时'时间

2.  它决定了'nginx会等待多长时间'来获得请求的响应

3.  这个时间不是获得整个response的时间,而是'两次read操作'的时间

补充: '后端发送'-->'nginx接收'场景;'nginx'主动关闭

备注:nginx会等待多长时间来'获得'请求的响应

⑩    proxy_send_timeout

1. 这个指定设置了'发送请求'给'upstream服务器'的超时时间

2. 超时设置'不是'整个发送期间,而是在'两次write操作'期间

3. 如果'超时'后,upstream'没有收到'新的数据,nginx会'关闭'连接

补充: 'nginx发送'-->'后端接收'场景;'后端'主动关闭

二     nginx反向代理下载文件失败处理

①    代理流程

+++++++++nginx作为一个"反向代理中间件",常见的代理流程为+++++++++

1) 接收客户端'请求'

2) 将请求'转发'到后端服务器

3) 接收后端服务器的'响应'

4) 再将响应'转发'给客户端

备注:以上四步都可能'产生超时',解决nginx超时问题最关键时要知道是在'哪一步超时'了,然后再'调整'响应的参数

②    报错一

1)实验现象

+++++++++"现象"+++++++++

1) 客户端下载文件时候,先到'代理nginx',然后nginx'找后端服务器'要文件。

2) 在下载'1G以上大文件'时候总是'无法正确'下载,下载1G左右就停止了.

2)原理分析

3)根因分析

Nginx Buffer 机制引发的下载故障

记一次下载大文件存在数据异常问题排查 

4)解决策略

说明: wget '下载大文件'可以看到'整个过程',最好'加上--limit-rate=限速'观察

wget -c 断点续传  未尝试过该方案

关于nginx支持断点续传的内容

nginx作为反向代理进行断点续传的一些注意事项

HTTP 请求头 Range  http协议 Range、If-Range  辅助参考

③      问题2:缓存目录不可写

说明: 这种'临时目录不可写'-->可能是'目录权限'问题;可能是'目录所在的分区'容量满了

解决策略:修改'目录权限';热更新'扩容'分区

浏览器下载文件不全解决方法 

nginx -t 的危险性

④    nginx日志相关时间解读补充

⑤     补充:概念辨析 

1)在HTTP协议中,'消息实体长度'和'消息实体的传输长度'是有区别

2)比如说gzip压缩下,消息实体长度是'压缩前'的长度,消息实体的传输长度是'gzip压缩后'的长度

 ⑥     数据下载传输原理

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐