Skip to main content
 首页 » 编程设计

ruby-on-rails之Nginx + puma 配置

2025年12月25日37lori

这是我的彪马配置:

path = Dir.pwd + "/tmp/puma/" 
 
threads 0,20 
environment "production" 
daemonize true 
drain_on_shutdown true 
 
# _load_from path 
 
bind  "unix://" + path + "socket/puma.sock" 
pidfile path + "pid/puma.pid" 
state_path path + "pid/puma.state" 

这是我的 nginx 配置:
upstream rails_app { 
  server /srv/rails/project/tmp/puma/socket/puma.sock; 
} 
 
server { 
# server_name domain.tld www.domain.tld; 
  root /srv/rails/project/public; 
 
  try_files $uri/index.html $uri @rails_app; 
 
  location @rails_app { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
 
    proxy_pass http://rails_app; 
  } 
 
  error_page 500 504 /500.html; 
  error_page 502 /502.html; 
  error_page 503 /503.html; 
 
  client_max_body_size 4G; 
  keepalive_timeout 10; 
} 

然而,当我重新启动 nginx 时:
sudo service nginx restart 

我明白了:
Starting nginx: nginx: [emerg] invalid host in upstream "/srv/rails/project/tmp/puma/socket/puma.sock" in /etc/nginx/sites-enabled/default:2 
nginx: configuration file /etc/nginx/nginx.conf test failed 

我可以在这里获得更多线索:
tail -f /var/log/nginx/error.log 
2014/04/30 09:07:33 [error] 7517#0: *1 directory index of "/srv/rails/project/" is forbidden, client: <ip address>, server: , request: "GET / HTTP/1.1", host:  <ip address> 
2014/04/30 09:35:55 [emerg] 8245#0: invalid host in upstream "/srv/rails/project/tmp/puma/socket/puma.sock" in /etc/nginx/sites-enabled/default:2 

但这对我来说意义不大,我害怕!

另外,我将我的 pid 和我的 sock 存储在项目根文件夹中。他们应该去的 ubuntu 服务器上有专门的地方吗?

请您参考如下方法:

您的配置不正确。正确的上游路径是:
server unix:///srv/rails/project/tmp/puma/socket/puma.sock;
unix://表示它是一个套接字。例如,您还可以使用 tcp://,并将其指向一个端口,例如 tcp://127.0.0.1:8080