Nginx 在 5 MB 数据后截断响应
Nginx truncates responses after 5 MB of data
使用 Nginx -v 1.10.3 (Ubuntu) 我有一个虚拟主机的配置:
server {
listen 443 ssl;
listen [::]:443 ssl;
include snippets/ssl.conf;
server_name myserver.example.com;
proxy_buffering off;
proxy_store off;
location / {
include proxy_params;
client_max_body_size 100m;
proxy_pass http://127.0.0.1:3033;
proxy_buffering off;
}
}
被代理的应用程序是 rails 应用程序。我可以上传最大 100MB 的文件。
include snippets/ssl.conf
仅包含证书。
include proxy_params;
包含这些指令:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
当我通过 ssh 隧道端口 3033 连接到后端时,我可以下载文件,它们是相同的。
通过代理连接时,无论文件类型或原始大小如何,文件总是在 5242880 字节后被截断 - 即 5MB。
截断一致。磁盘上有足够的空闲 space,有足够的空闲 inode。 nginx 日志中没有错误消息。
当尝试下载一个 31MB 的文件时(calibre 安装...)访问日志显示如下:
AAA.BBB.CCC.DDD - - [08/Nov/2018:16:36:59 +0100] "GET /rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaDFsVlVkdlVFaFFha1E1V2tKUk5HbG9RMVU0Vm1JNGJVY0dPZ1pGVkE9PSIsImV4cCI6IjIwMTgtMTEtMDhUMTU6NDE6NTkuMDMyWiIsInB1ciI6ImJsb2Jfa2V5In19--9ba3dd25c32c16ce10ef884b80f9f6d3705717f2/calibre-3.33.1.dmg?content_type=application%2Fx-bzip&disposition=attachment%3B+filename%3D%22calibre-3.33.1.dmg%22%3B+filename%2A%3DUTF-8%27%27calibre-3.33.1.dmg HTTP/1.1" 200 5253135 "https://myserver.example.com/supplies/2" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
所以显示的文件大小已经被截断了。
我已经完成作业并查看了 nginx 文档并进行了搜索,但所有其他用户都在错误日志中报告了错误,随机截断或仅截断某些文件类型。
非常感谢任何帮助。
我刚刚从@amiuhle 那里得到了一个关于 的答案:
Use proxy_http_version 1.1;
By default, nginx uses HTTP 1.0 for proxying, which does not support
chunked transfer encoding.
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version
使用 Nginx -v 1.10.3 (Ubuntu) 我有一个虚拟主机的配置:
server {
listen 443 ssl;
listen [::]:443 ssl;
include snippets/ssl.conf;
server_name myserver.example.com;
proxy_buffering off;
proxy_store off;
location / {
include proxy_params;
client_max_body_size 100m;
proxy_pass http://127.0.0.1:3033;
proxy_buffering off;
}
}
被代理的应用程序是 rails 应用程序。我可以上传最大 100MB 的文件。
include snippets/ssl.conf
仅包含证书。
include proxy_params;
包含这些指令:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
当我通过 ssh 隧道端口 3033 连接到后端时,我可以下载文件,它们是相同的。
通过代理连接时,无论文件类型或原始大小如何,文件总是在 5242880 字节后被截断 - 即 5MB。
截断一致。磁盘上有足够的空闲 space,有足够的空闲 inode。 nginx 日志中没有错误消息。
当尝试下载一个 31MB 的文件时(calibre 安装...)访问日志显示如下:
AAA.BBB.CCC.DDD - - [08/Nov/2018:16:36:59 +0100] "GET /rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaDFsVlVkdlVFaFFha1E1V2tKUk5HbG9RMVU0Vm1JNGJVY0dPZ1pGVkE9PSIsImV4cCI6IjIwMTgtMTEtMDhUMTU6NDE6NTkuMDMyWiIsInB1ciI6ImJsb2Jfa2V5In19--9ba3dd25c32c16ce10ef884b80f9f6d3705717f2/calibre-3.33.1.dmg?content_type=application%2Fx-bzip&disposition=attachment%3B+filename%3D%22calibre-3.33.1.dmg%22%3B+filename%2A%3DUTF-8%27%27calibre-3.33.1.dmg HTTP/1.1" 200 5253135 "https://myserver.example.com/supplies/2" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
所以显示的文件大小已经被截断了。
我已经完成作业并查看了 nginx 文档并进行了搜索,但所有其他用户都在错误日志中报告了错误,随机截断或仅截断某些文件类型。
非常感谢任何帮助。
我刚刚从@amiuhle 那里得到了一个关于
Use proxy_http_version 1.1;
By default, nginx uses HTTP 1.0 for proxying, which does not support chunked transfer encoding.
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version