У меня есть сервер, установленный на 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;
}
}