net :: ERR_INCOMPLETE_CHUNKED_ENCODING nginx

pra*_*ech 17 google-chrome ruby-on-rails nginx

我在2个不同的服务器上托管了2个RoR Web应用程序.对于一个特定页面,请求从第二个应用程序提供.对于其余页面,请求由主应用程序提供.主应用程序的Nginx设置

location /customer/help/ {
            proxy_pass http://second-application:3020/help_and_support/;
}
location /assets/ {
            proxy_pass http://second-application:3020/assets/;
}
Run Code Online (Sandbox Code Playgroud)

这工作到昨天一直很好.现在,/customer/help/页面加载不正确.在Firefox中它显示一个空白页面,在chrome中,它部分加载,控制台显示错误

net::ERR_INCOMPLETE_CHUNKED_ENCODING
Run Code Online (Sandbox Code Playgroud)

调试后我发现问题可能是通过API发送的图像数据.我的第二个应用程序调用API来获取图像并在页面上显示它们

<% url_with_binary_data = "data:image/" + "jpeg" + ";base64," + u.photo_url.to_s %>
<%= image_tag(url_with_binary_data, :class => "userpic")  %>
Run Code Online (Sandbox Code Playgroud)

用于获取图像的API代码

photo_url: Base64.encode64(u.photo.file.read).gsub("\n", '')
Run Code Online (Sandbox Code Playgroud)

DfK*_*era 24

您可能想要检查运行Nginx工作线程的用户是否拥有该目录/var/lib/nginx.

我已经了解到,当您为Nginx提供过大的响应时,它会使用此目录作为临时文件的工作目录.如果工作进程无法访问它,Nginx将在传输完成之前终止传输,因此错误INCOMPLETE_CHUNKED_ENCODING.

  • 你永远不知道这是如何拯救我的! (2认同)
  • 检查哪个用户nginx正在运行(通常在nginx.conf中),然后将nginx lib目录的所有权授予该用户`own -R nginx:nginx / var / lib / nginx /`。您可以重新加载nginx(在CentOS 6上`service nginx reload`)以防万一。 (2认同)

小智 9

在AWS上遇到了这个问题,发现在站点配置文件中添加了一些proxy_buffer指令可以解决以下问题:

server {
    ...

    location / {
        ...
        proxy_buffers 8 1024k;  
        proxy_buffer_size 1024k;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这解决了我的问题。知道为什么这有帮助吗? (2认同)

shl*_*osh 5

对我来说,解决方案是什么DfKimer建议,而是的/var/lib/nginx/var/cache/nginx