nginx(二十八)nginx下载文件失败
一 基础知识铺垫①②③④⑤理解报错日志⑥核心原因:未配置长连接读取请求头超时时间:client和nginx之间的相关设置模拟-->实验chunk的理解案例讲解1)在HTTP协议中,消息实体长度和消息实体的传输长度是有区别2)比如说gzip压缩下,消息实体长度是压缩前的长度,消息实体的传输长度是gzip压缩后的长度①②③④⑤⑥五 相关时间解读啊超时时间 前-->中-->后nginx
·
'1'表示层级1的目录名为1个数字(0-9);'2'表示层级2目录名为2个数字(00-99)
+++++++++++'遗留问题'+++++++++++
1) 存储时机-->'后端服务器response超出nginx侧的buffer配置',缓冲'存储不下'
2) 如果使用'本地'存储,则要考虑该'目录'分区容量的大小,避免'磁盘不可写'
1) 这个指令用于设置'从被代理服务器读取应答内容'的缓存区的'数目'和'大小'
2) 数目可以'任意定',但是一个'缓存区的大小'一般就是'4k或者8k'
'nginx侧报错':'error日志'得到-->'upstream sent too big header' while reading response header from upstream
'clinet端报错':client收到的是'502报错'
根因: '后端服务器'返回给nginx的header'太大',超出了'预设'值
重点:写入'temp_file'的频率'或者'颗粒度
重点: 当buffer缓冲区'超过proxy_buffers+proxy_buffer_size',然后通过'proxy_temp_file_write_size'频率就开始'刷写'磁盘
备注:如果代理服务器在此时间内'未返回'任何内容,nginx将'返回504'给'client'
proxied server --> "被代理服务器[后端服务器]"
1. 该指令设置与代理服务器的'读超时'时间
2. 它决定了'nginx会等待多长时间'来获得请求的响应
3. 这个时间不是获得整个response的时间,而是'两次read操作'的时间
补充: '后端发送'-->'nginx接收'场景;'nginx'主动关闭
备注:nginx会等待多长时间来'获得'请求的响应
1. 这个指定设置了'发送请求'给'upstream服务器'的超时时间
2. 超时设置'不是'整个发送期间,而是在'两次write操作'期间
3. 如果'超时'后,upstream'没有收到'新的数据,nginx会'关闭'连接
补充: 'nginx发送'-->'后端接收'场景;'后端'主动关闭
① 代理流程
+++++++++nginx作为一个"反向代理中间件",常见的代理流程为+++++++++
1) 接收客户端'请求'
2) 将请求'转发'到后端服务器
3) 接收后端服务器的'响应'
4) 再将响应'转发'给客户端
备注:以上四步都可能'产生超时',解决nginx超时问题最关键时要知道是在'哪一步超时'了,然后再'调整'响应的参数
② 报错一
1)实验现象
+++++++++"现象"+++++++++
1) 客户端下载文件时候,先到'代理nginx',然后nginx'找后端服务器'要文件。
2) 在下载'1G以上大文件'时候总是'无法正确'下载,下载1G左右就停止了.
2)原理分析
3)根因分析
4)解决策略
说明: wget '下载大文件'可以看到'整个过程',最好'加上--limit-rate=限速'观察
HTTP 请求头 Range http协议 Range、If-Range 辅助参考
说明: 这种'临时目录不可写'-->可能是'目录权限'问题;可能是'目录所在的分区'容量满了
解决策略:修改'目录权限';热更新'扩容'分区
④ nginx日志相关时间解读补充
⑤ 补充:概念辨析
1)在HTTP协议中,'消息实体长度'和'消息实体的传输长度'是有区别
2)比如说gzip压缩下,消息实体长度是'压缩前'的长度,消息实体的传输长度是'gzip压缩后'的长度
⑥ 数据下载传输原理
更多推荐
已为社区贡献5条内容
所有评论(0)