【问题标题】:net::ERR_INCOMPLETE_CHUNKED_ENCODING nginx网络::ERR_INCOMPLETE_CHUNKED_ENCODING nginx
【发布时间】:2015-06-29 14:54:35
【问题描述】:

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

location /customer/help/ {
            proxy_pass http://second-application:3020/help_and_support/;
}
location /assets/ {
            proxy_pass http://second-application:3020/assets/;
}

直到昨天这一切都很好。现在,/customer/help/ 页面未正确加载。在 Firefox 中,它显示一个空白页面,在 chrome 中,它部分加载并且控制台显示错误

net::ERR_INCOMPLETE_CHUNKED_ENCODING

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

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

获取图片的API代码

photo_url: Base64.encode64(u.photo.file.read).gsub("\n", '')

【问题讨论】:

    标签: ruby-on-rails google-chrome nginx


    【解决方案1】:

    您可能需要检查运行 Nginx 工作程序的用户是否拥有目录 /var/lib/nginx(或在某些发行版中为 /var/cache/nginx)。

    我了解到,当您给出的响应对于 Nginx 来说太大时,它会使用这个目录来写入临时文件的工作目录。如果工作进程无法访问,Nginx 会在传输完成之前终止传输,从而报错INCOMPLETE_CHUNKED_ENCODING

    【讨论】:

    • 我遇到了同样的错误。如果问题与 nginx 有关,那么我们该如何解决?
    • 如果导航到/var/lib/nginx 并运行ls -lah,输出是什么?
    • 你永远不知道这如何救了我!
    • 检查哪个用户 nginx 正在运行(通常在 nginx.conf 中),然后您需要将 nginx lib 目录的所有权授予该用户chown -R nginx:nginx /var/lib/nginx/。您可以重新加载 nginx(CentOS 6 上的service nginx reload)以防万一。
    • 这也解决了我的问题,同时通过 nginx 代理 Kibana 5.4。
    【解决方案2】:

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

    server {
        ...
    
        location / {
            ...
            proxy_buffers 8 1024k;  
            proxy_buffer_size 1024k;
        }
    }
    

    【讨论】:

    • 这解决了我的问题。知道为什么这会有所帮助吗?
    【解决方案3】:

    对我来说,解决方案是 DfKimer 推荐的,但不是/var/lib/nginx,而是/var/cache/nginx

    【讨论】:

      【解决方案4】:

      对我来说,解决方案是启用proxy_max_temp_file_size

      【讨论】:

        【解决方案5】:

        proxy_set_header 连接保持活动;


        完整配置

        server {
                listen      0000; #//port give by your need
                server_name  aa.com;
                proxy_buffers 16 4k;
                proxy_buffer_size 2k;
        
        
                #charset koi8-r;
        
                #access_log  logs/host.access.log  main;
                location ~ ^/hello/{
                    proxy_buffering off;
                    proxy_pass http://127.0.0.1:1111; #//port give by your need
                    proxy_redirect     off;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header Connection keep-alive; 
                }
        

        【讨论】:

          【解决方案6】:

          由于服务器内存已满,我收到此错误。希望这对将来的任何人都有帮助。

          【讨论】:

          • 在我的 Kibana 服务器上也是如此,'df -h' 表明服务器已满,nginx 无法在 /var/cache/nginx 中缓存新文件,阻止 Kibana 加载(Kibana没有正确加载)。腾出一些空间解决了这个问题。
          【解决方案7】:

          php & nginx web 服务器的 100% 工作解决方案

          问题 => net::ERR_INCOMPLETE_CHUNKED_ENCODING nginx

          Step1:打开 /etc/php/7.2/fpm/pool.d [在我使用 php 7.2 的情况下选择您的 php 文件夹]

          Step2 : 编辑 pool.d 文件夹内的 www.conf 文件

          就我而言,它看起来像这样 =>

          [inet]
          user = www-data
          group = www-data
          
          listen = 127.0.0.1:9999
          listen.owner = www-data
          listen.group = www-data
          listen.mode = 0660
          listen.allowed_clients = 127.0.0.1
          
          pm = dynamic
          pm.max_children = 5
          pm.start_servers = 2
          pm.min_spare_servers = 1
          pm.max_spare_servers = 3
          pm.max_requests = 5
          
          pm.status_path = /status
          ping.path = /ping
          
          request_terminate_timeout = 10s
          request_slowlog_timeout = 10s
          
          ;
          ; Log files
          ;
          access.log = /var/log/php-fpm/php-fpm.log
          slowlog = /var/log/php-fpm/slow.log
          

          Step3:将request_terminate_timeout的值改为10s(任意时间)

          request_terminate_timeout = 300s
          

          Step4:现在保存并重新启动 php-fpm(在我的情况下,我使用的是 php7.2,所以 cmd 将是)

          sudo service php7.2-fpm restart
          

          现在你可以执行你的脚本了

          现在再添加一行语法 fastcgi_read_timeout 300; 在 nginx.conf 文件或您的网站 .conf 文件[这里是代码]

          user www-data;
          worker_processes 1;
          pid /var/run/nginx.pid;
          
          events {
              worker_connections 1024;
          }
          
          http { 
          include /etc/nginx/conf-enabled/*.conf;
          include /etc/nginx/sites-enabled/*.conf;    
          }
          

          添加fastcgi_read_timeout 300;后会是这个样子

          user www-data;
          worker_processes 1;
          pid /var/run/nginx.pid;
          
          events {
              worker_connections 1024;
          }
          
          http { 
          include /etc/nginx/conf-enabled/*.conf;
          include /etc/nginx/sites-enabled/*.conf;
          fastcgi_read_timeout 300; 
          }
          

          现在重新加载nginx并按照cmd重新启动php-fpm

          sudo service php7.2-fpm reload
          sudo service nginx reload
          

          注意:代码 sn-p 已运行并由我测试,如果您无法通过我的回答解决您的问题,请告诉我

          【讨论】:

            【解决方案8】:

            如果代理服务器无法写入/var/lib/nginx,则不需要使用该目录的文件权限或所有权。您可以通过以下方式更改 nginx 的缓存目录以用于上下文;

            proxy_temp_path /home/emre/projects/frontend/nginx_temp 1 2;
            

            nginx.conf 文件的httpserverlocation 上下文中。

            查看http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_path

            【讨论】:

              【解决方案9】:

              对我来说,解决方案是禁用缓存。 对于上下文,我的设置是用于本地开发,并且 nginx 被用作反向代理来基本上映射域

              location / {
                proxy_pass http://localhost:3000;
              
                # don't cache it
                proxy_no_cache 1;
                # even if cached, don't try to use it
                proxy_cache_bypass 1;
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2021-11-14
                • 2015-11-16
                • 1970-01-01
                • 1970-01-01
                • 2018-09-21
                • 2019-05-04
                • 2021-01-26
                相关资源
                最近更新 更多