0

これは、nginx エラー ログに表示される出力です。

013/11/10 09:40:38 [error] 20439#0: *1021 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: <server ip>, server: , request: "GET / HTTP/1.0", upstream: "http:/some ip address:80/", host: "some id address"

nginx.conf ファイルの内容は次のとおりです。

user  www-user;
worker_processes  1;

#error_log  /var/log/nginx/error.log warn;
error_log  /srv/app.myserver.com/current/log/nginx-error.log warn;
pid        /var/run/nginx.pid;

worker_rlimit_nofile 30000;

events {
    worker_connections  10000;
}


http {
    include       /etc/nginx/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;
    access_log  /srv/app.myserver.com/current/log/nginx-access.log main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/myserver.conf;
}

/etc/nginx/conf.d/myserver.conf の内容は次のとおりです。

upstream myserver {
  # This is the socket we configured in unicorn.rb
  server unix:/srv/app.myserver.com/current/tmp/myserver.sock
  fail_timeout=0;
}

server {
  listen 80 default deferred;
  #client_max_body_size 4G;
  server_name app.myserver.com;

  #keepalive_timeout 5;

  # Location of our static files
  root /srv/app.myserver.com/current/public;

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

  try_files $uri/index.html $uri @myserver;

  location @myserver {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://myserver;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

最後に、スペースを節約するためにコメントを取り除いた config/unicorn.rb ファイルの内容を次に示します。

worker_processes 4

user "www-user", "www-user"


root = "/srv/app.myserver.com/current/"
working_directory root

# QUESTION HERE: should this be considered relative to working_directory or from filesystem root?
listen "/tmp/myserver.sock", :backlog => 64
listen 8080, :tcp_nopush => true
listen 80, :tcp_nopush => true

timeout 30

pid "/srv/app.myserver.com/current/tmp/pids/unicorn.pid"

Capistrano を使用して展開しています。tmp ディレクトリが存在し、そこに myserver.sock ファイルがあることを確認しました。

最後に、 nginx -VI を実行すると、次の構成フラグのリストが取得されます。

--prefix=/etc/nginx 
--sbin-path=/usr/sbin/nginx 
--conf-path=/etc/nginx/nginx.conf 
--error-log-path=/var/log/nginx/error.log 
--http-log-path=/var/log/nginx/access.log 
--pid-path=/var/run/nginx.pid 
--lock-path=/var/run/nginx.lock 
--http-client-body-temp-path=/var/cache/nginx/client_temp 
--http-proxy-temp-path=/var/cache/nginx/proxy_temp 
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
--http-scgi-temp-path=/var/cache/nginx/scgi_temp 
--user=nginx 
--group=nginx 
--with-http_ssl_module 
--with-http_realip_module 
--with-http_addition_module 
--with-http_sub_module 
--with-http_dav_module 
--with-http_flv_module 
--with-http_mp4_module 
--with-http_gunzip_module 
--with-http_gzip_static_module 
--with-http_random_index_module 
--with-http_secure_link_module 
--with-http_stub_status_module 
--with-mail 
--with-mail_ssl_module 
--with-file-aio 
--with-ipv6 
--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
--param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables'

アップストリームモジュールを呼び出すものは何もありません。それは私の問題でしょうか?

これは、nginx と unicorn を使用する最初のパスなので、まだ多くのコンテキストが欠落しています...

さらに情報が必要な場合は、お知らせください...

4

2 に答える 2

1

まず、アイデアをありがとう。私はこれを理解し、完全に間違ったツリーを吠えていました. 問題は、ユニコーンが起動に失敗していたことです。これは、ヘルパーの 1 つがモジュールではなくクラスであり、シンと Webrick ではこれが可能である一方で、Unicorn には子猫がいたためです。他にもいくつかの些細なことがありましたが、ユニコーンを始めることができたら、うまくいきました。この投稿の時点では、ユニコーンを始めなければならないことに気づいていませんでした。

繰り返しになりますが、回答とコメントのアイデアに感謝します。大変感謝しております。

キーボードと椅子の間にエラーが存在します。:P

于 2013-11-17T16:08:54.813 に答える
1

試してみるいくつかのこと:

nginx 構成で、アップストリーム サーバーをlocalhost:<unicorn-port>ソケットの代わりに使用するように設定します。例:

upstream myserver {
  server localhost:8080 fail_timeout=0;
}

nginx は Web サーバーなのでlisten 80, :tcp_nopush => trueunicorn.rb.

于 2013-11-10T21:10:16.807 に答える