Назад | Перейти на главную страницу

Ошибка виртуального хостинга поддомена Nginx + Unicorn (таймауты)

У меня есть сервер, установленный на VPS, обслуживающий производственное приложение Rails через Nginx + Unicorn. В настоящее время это отлично работает со следующими файлами conf:

Однако добавленный субдомен staging.appname.tld в конечном итоге приводит к следующей ошибке в /var/log/nginx/error.log:

2012/08/20 16:57:39 [error] 24673#0: *174 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: staging.appname.com, request: "GET / HTTP/1.1", upstream: "http://unix:/tmp/unicorn.appname_staging.sock:/", host: "staging.appname.com"
2012/08/20 16:58:17 [error] 24673#0: *178 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: staging.appname.com, request: "GET / HTTP/1.1", upstream: "http://unix:/tmp/unicorn.appname_staging.sock:/", host: "staging.appname.com"
2012/08/20 16:59:29 [error] 24673#0: *182 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: staging.appname.com, request: "GET / HTTP/1.1", upstream: "http://unix:/tmp/unicorn.appname_staging.sock:/", host: "staging.appname.com"

Конфигурации, вызывающие эту ошибку:

Кроме того, носки существуют! Если мы заглянем в / tmp /, то увидим: unicorn.appname.sock и unicorn.appname_staging.sock

И Вот это nginx -V вывод.

Казалось бы, в конфиге что-то не так, но я этого просто не вижу. Может ли кто-нибудь посоветовать, откуда эта ошибка и как правильно настроить поддомены, такие как промежуточная среда в этом контексте?

Я не вижу ничего неправильного в вашей конфигурации, хотя есть некоторые мелочи, которые нужно улучшить, но ничего, что могло бы их сломать. Не могли бы вы активировать ведение журнала отладки и опубликовать журнал здесь.

И, пожалуйста, взгляните на следующую измененную конфигурацию (с активированным ведением журнала отладки).

upstream unicorn_appname_staging {
  server unix:/tmp/unicron.appname_staging.sock max_fails=0;
}

server {
  listen 80;
  index index.html;
  root /home/deployer/apps/appname/staging/current/public;
  server_name staging.appname.com;

  client_max_body_size 4G;
  keepalive_timeout 10;

  access_log /var/log/nginx/staging.appname.com.access.log;
  error_log /var/log/nginx/staging.appname.com.error.log debug;
  error_page 500 502 503 504 /500.html;

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

    try_files $uri @unicorn_appname_staging;
  }

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