Как развернуть пуму с nginx

Как развернуть puma с помощью nginx или apache, возможно ли это или нет необходимости использовать веб-сервер, такой как nginx или apache. Как лучше всего развернуть приложение с помощью puma?


person Boris Barroso    schedule 03.10.2012    source источник
comment
вы спрашиваете, как объявить puma восходящим потоком в конфигурации nginx? Как вы планируете использовать nginx? Для кэширования? Для балансировки нагрузки?   -  person nurettin    schedule 19.12.2012
comment
Вот подробное пошаговое руководство: ruby-journal.com/how-to-setup-rails-app-with-puma-and-nginx   -  person Jahan    schedule 22.04.2013
comment
По какой причине вы хотите использовать Puma вместо Phusion Passenger? Phusion Passenger значительно упрощает развертывание и требует меньше настроек. Вы можете настроить и запустить все за считанные минуты, и вам нужно только настроить Apache или Nginx, а не какие-либо другие компоненты. Phusion Passenger очень зрелый, стабильный и производительный и используется такими компаниями, как New York Times, Symantec, AirBnB и т. д.   -  person Hongli    schedule 06.05.2013
comment
Да, я использую Passenger, но в PUMA есть очень интересные вещи, особенно если вы хотите создавать приложения в реальном времени.   -  person Boris Barroso    schedule 09.05.2013


Ответы (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, конечно, вы должны настроить ssl с letsencrypt.

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";
  }

}
person Boris Barroso    schedule 22.08.2017

Поскольку Puma не предназначена для прямого доступа пользователей, мы будем использовать Nginx в качестве обратного прокси-сервера, который будет буферизовать запросы и ответы между пользователями и вашим приложением Rails. Puma использует потоки в дополнение к рабочим процессам, чтобы более эффективно использовать доступный ЦП. Связь Nginx и puma осуществляется через сокет:

nginx пума

Исходное изображение: http://codeonhill.com

Если вам нужно объяснение того, как развертывать приложения с помощью Puma и Nginx, проверьте это

person kalelc    schedule 09.11.2015