我们最近从 nginx 入口控制器从 0.8.2 升级到 0.11.0,并且在上传大约 10 MB 或更高的大文件时开始出现 502 bad gateway 错误,我们通过configmap 中的proxy-body-size将client_max_body_size设置为500m和验证 了它的设置。大约 5-6 MB 的较小文件可以正常工作。
日志中没有错误,只有这些消息。
已编辑 - [已编辑] - - [25/Mar/2018:02:08:49 +0000] "POST /redacted/upload HTTP/1.1" 000 0 " https://redacted/ " "Mozilla/5.0 (Windows NT 10.0 ; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" 3371263 10.850 [uploader-443] ----
和
[警告] 30684#30684: *42090 客户端请求正文缓冲到临时文件 /var/lib/nginx/body/0000000482,客户端:已编辑,服务器:已编辑,请求:“POST /redacted/upload HTTP/1.1” ,主持人:“已编辑”,推荐人:“ https://redacted/ ”
代理服务器是 tomcat,请求不会发送到 tomcat。我们尝试增加:
- 超时
- 代理缓冲区
- proxy_buffer_size
但没有任何效果。
回到0.8.2版本解决了这个问题。
更新 1:nginx.conf 片段
位置/已编辑/ {
port_in_redirect 关闭;
设置 $proxy_upstream_name "redacted-443";
……
……
client_max_body_size "500m";