2012-10-22 78 views
0

我有下一個組件的服務器:Nginx的:無法HTTP響應轉發回HTTP客戶端

  • 的Ubuntu 12.04
  • Nginx的1.2.2
  • 客運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; 
    } 
} 

回答

1

你配置看起來不錯。我認爲錯誤正是它所說的:最終用戶在瀏覽器上點擊「停止」,關閉到服務器的TCP連接。應用程序堆棧中的所有內容都可能按照設計工作。除非最終用戶抱怨應用程序無法正常工作,否則這是最有可能的解釋。這就是說,如果你看到這個錯誤很多,你可能會問的下一個問題是「爲什麼用戶點擊停止按鈕這麼多」?也許你的應用程序的一部分對用戶做出響應的時間太長,你需要加速或者添加某種進度指示器。您可以回顧一下您的日誌,看看是否可以將錯誤與特定類型的請求關聯起來。

+2

FWIW,我在類似的設置中看到了這種行爲。不同之處在於我是提出請求的人,而且我絕對沒有按下停止按鈕。 –

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並重新啓動,你會發現一切正常!