原文链接:https://blog.csdn.net/sc9018181134/article/details/82055225
背景:
一开始是一个下载文件的需求,但是不能直接下载,需要通过nginx做代理转发后,才能将文件流输出给合作方.然后我们将url的请求通过nginx代理到真实去下载文件流的服务器发现并不能下载到文件.(是通过请求浏览器去下载的,浏览器会显示此网页无法正常运作)
分析:
如果不填写http的版本的话,默认是http1.0,而且下载文件是使用的分块传递,http1.0是不支持这个特性的.可以简单的了解一下分块传递.
总结:
在nginx的location模块里面加上proxy_http_version 1.1就可以了
这个问题与其说是nginx报错,不如说是不了解http不同版本之间特性的差异.而且要记住一点的是nginx代理后的默认http版本是1.0.如果原始请求是长连接或者分块传递,记得加上http1.1的参数.