如何使用nginx部署puma

3

如何使用 nginxapache 部署 puma?是否有必要使用像 nginx 或 apache 这样的 Web 服务器?使用 puma 部署一个应用程序,最好的方法是什么?


你是在问如何在nginx配置中将puma声明为上游吗?你打算如何使用nginx?用于缓存?用于负载均衡? - nurettin
1
这是详细的逐步指南: http://ruby-journal.com/how-to-setup-rails-app-with-puma-and-nginx/ - Jahan Zinedine
你为什么想要使用 Puma 而不是 Phusion Passenger 呢?Phusion Passenger 可以让部署变得更加容易,配置也更少。你只需要在几分钟内就可以启动并运行它,而且只需要配置 Apache 或 Nginx,而不需要其他组件。Phusion Passenger 非常成熟、稳定和高效,被像纽约时报、赛门铁克、AirBnB 等公司所使用。 - Hongli
是的,我使用Passenger,但如果您想制作实时应用程序,PUMA有一些非常有趣的功能。 - Boris Barroso
2个回答

2
关键在于该站点的nginx配置文件。
server {
  listen 80;
  server_name mysite.com;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://localhost:4000;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

}

正如您所看到的proxy_pass http://localhost:4000;行告诉nginx在本地主机的4000端口上监听,您可以根据需要更改。

这是一个小的更改,以便与ssl letsencrypt一起使用,当然您应该使用letsencrypt配置ssl。

server {
  listen 80;
  server_name example.com;

  location / {
    return 301 https://example.com$request_uri;
  }
}

server {
  listen 443 ssl http2;
  server_name example.com;
  #listen [::]:443 ssl http2 ipv6only=on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
  ssl_trusted_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  include /etc/nginx/snippets/ssl.conf;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://localhost:4000;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

}

1
由于 Puma 不是直接面向用户访问的,因此我们将使用 Nginx 作为反向代理,在用户和您的 Rails 应用程序之间缓冲请求和响应。除了工作进程外,Puma 还使用线程来更充分利用可用的 CPU。Nginx 和 Puma 之间的通信通过套接字完成:

nginx puma

源图像:http://codeonhill.com

如果您需要关于如何使用Puma和Nginx部署应用程序的解释,请查看this


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接