【发布时间】:2014-06-18 12:12:00
【问题描述】:
我在设置 Nginx 以与 Puma 服务器一起使用 Rails 4 应用程序时遇到问题。
问题似乎出在我的 Nginx 配置中,因为我不断收到 502 Bad Gateway 错误并且错误日志指出以下内容:
*1 connect() to unix:///srv/vhosts/rumysitename/www/mysitename/tmp/mysitename.sock failed
(2: No such file or directory) while connecting to upstream, client: XX.XXX.XX.XXX,
server: mysitename.com, request: "GET /favicon.ico HTTP/1.1", upstream:
"http://unix:///srv/vhosts/rumysitename/www/mysitename/tmp/mysitename.sock:/favicon.ico",
host: "mysitename.com"
这是我正在使用的 Nginx 站点配置:
upstream mysitename {
server unix:///srv/vhosts/rumysitename/www/mysitename/tmp/mysitename.sock;
}
server {
listen 80;
server_name mysitename.com;
root /srv/vhosts/rumysitename/www/mysitename/public;
location / {
proxy_pass http://mysitename;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^/assets/ {
# Per RFC2616 - 1 year maximum expiry
expires 1y;
add_header Cache-Control public;
# Some browsers still send conditional-GET requests if there's a
# Last-Modified header or an ETag header even if they haven't
# reached the expiry date sent in the Expires header.
add_header Last-Modified "";
add_header ETag "";
break;
}
}
不用说 Puma 无法连接到那只袜子,因为它不存在:
rails s -e production -b unix:///srv/vhosts/rumysitename/www/mysitename/tmp/mysitename.sock=> Booting Puma
=> Rails 4.1.0 application starting in production on http://unix:///srv/vhosts/rumysitename/www/mysitename/tmp/mysitename.sock:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Puma 2.8.2 starting...
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://unix:///srv/vhosts/rumysitename/www/mysitename/tmp/mysitename.sock:3000
Exiting
/srv/vhosts/rumysitename/.rvm/gems/ruby-2.1.0/gems/puma-2.8.2/lib/puma/binder.rb:195:in `initialize': getaddrinfo: Name or service not known (SocketError)
我不是系统管理员,完全没有使用 Nginx 的经验,如果我遗漏了一些明显的东西,请见谅。
【问题讨论】:
-
当您运行 puma 时,您是否要求它绑定到该套接字?像
puma -b unix:///srv/vhosts/rumysitename/www/mysitename/tmp/mysitename.sock这样的东西。我之前对套接字的http://前缀感到困惑,但我认为这是日志记录而不是配置中的错误。 -
@Shadwell 是的,我愿意,我包含了我正在使用的 puma start 命令,它在问题中输出
标签: ruby-on-rails nginx puma