Nginx proxy_http_version默认值引发的问题
项目场景:服务端配置了nginx代理,为客户端请求做数据转发问题描述:服务端和nginx部署好之后,通过postman测试一个文件下载接口,发现没有任何响应。这时查看服务端日志发现请求有进来,且正常返回,但是postman测试却没有任何回复,见鬼了。原因分析:以上是为了烘托气氛,为下文做铺垫,不要慌,其实正常人都知道从nginx排查…查看了nginx日志,当场好家伙,发现以下错误日志:2021/0
项目场景:
服务端配置了nginx代理,为客户端请求做数据转发下载文件
问题描述:
服务端和nginx部署好之后,通过postman测试一个文件下载接口,发现没有任何响应。这时查看服务端日志发现请求有进来,且正常返回,但是postman测试却没有任何回复,见鬼了。
原因分析:
以上是为了烘托气氛,为下文做铺垫,不要慌,其实正常人都知道从nginx排查…
查看了nginx日志,当场好家伙,发现以下错误日志:
2021/06/01 15:24:27 [error] 3986#0: *990083 upstream sent invalid chunked response while reading upstream, client: xxx.xxx.xx.x, server: xxx.xxx.xx, request: “GET /api/server/download?fileKey=990aa1bc5e HTTP/1.1”, upstream: “http://xx.xxx.xxx.x:8080/api/server/download?fileKey=990aa1bc5e”, host: “xxxx.xxx.xx”
抓取以下关键错误信息:
upstream sent invalid chunked response while reading upstream
HTTP/1.1
通过网上查找发现问题,nginx在代理是默认http版本为1.0,由于文件的下载涉及到使用分块传递,但http1.0是不支持这个特性的。所以服务端为1.1版本无法进行转发
解决方案:
只要在nginx配置的location模块里面加上proxy_http_version 1.1就可以了,完美
更多推荐
所有评论(0)