Nginx:无法将HTTP响应转发回HTTP客户端

时间:2012-10-22 18:48:02

标签: ruby-on-rails ubuntu nginx passenger

我有一台带有下一个组件的服务器:

  • Ubuntu 12.04
  • Nginx 1.2.2
  • Passenger 3.0.15

我正在此服务器上运行Ruby on Rails应用程序。 现在在我的Nginx的error.log中,我发现这个错误会定期弹出。

[ pid=12615 thr=3065355072 file=ext/nginx/HelperAgent.cpp:923 time=2012-10-22 09:31:03.929 ]: Couldn't forward the HTTP response back to the HTTP client: It seems the user clicked on the 'Stop' button in his browser.

有人知道这个问题的来源吗? 这是我的Nginx conf:

user deployer staff;
worker_processes  5;

error_log  /var/log/nginx/error.log notice;
pid        /var/log/nginx/nginx.pid;

events {
    worker_connections  2048;
    multi_accept on;
}

http {
    passenger_root /var/lib/gems/1.9.1/gems/passenger-3.0.15;
    passenger_ruby /usr/bin/ruby1.9.1;

    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    keepalive_timeout  65;

    server {
        passenger_enabled on;
        server_name xxx.com;
        listen       80;
        rails_env production;

        location ^~ /assets/ {
            gzip_static on;
             expires max;
             add_header Cache-Control public;
        }

        root /var/rails/alfa_paints/current/public;
        error_page  404              /404.html;

        error_page   500 502 503 504  /500.html;
    }
}

2 个答案:

答案 0 :(得分:1)

您的配置看起来很好。我认为错误正是它所说的:最终用户点击了浏览器上的“停止”,关闭了与服务器的TCP连接。应用程序堆栈中的所有内容都可能按设计运行。除非您有最终用户抱怨该应用程序无法正常工作,否则这是最可能的解释。

那就是说,如果你经常看到这个错误,你可能会问的下一个问题是“为什么用户会如此多地点击停止按钮”?也许你的应用程序的一部分花了很长时间来响应用户,你需要加快速度或添加某种进度指示器。您可以回顾一下您的日志,看看是否可以将错误与特定类型的请求相关联。

答案 1 :(得分:0)

另一种情况可能就像这个nginx Timeout serving large requests

要解决此问题,您可以尝试以下方法:

 gem install passenger #use the lastest passenger
 passenger-config --root # get passenger_root_path
 #download the lastest nginx file and cd nginx-X.X.X
 ./configure --with-http_ssl_module --with-http_gzip_static_module --with-cc-opt=-Wno-error --add-module=$passenger_root_path/ext/nginx
 make
 make install

之后,配置nginx.conf并重新启动,你会发现一切正常!