Настройка Nginx + Puma для Rails
Просто, чтоб не забыть.
Создаем или редактируем файл /path_to_your_rails_app/config/puma.rb (всякие пути и названия нужно указать свои, само собой):
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
threads threads_count, threads_count
port ENV.fetch("PORT") { 3000 }
environment ENV.fetch("RAILS_ENV") { "development" }
app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/tmp"
#ниже вместо your_socket.sock пишете название своего файла сокета
bind "unix://#{shared_dir}/your_sock.sock"
#перенаправляем stdout в файлы логов
stdout_redirect "#{app_dir}/log/puma.stdout.log", "#{app_dir}/log/puma.stderr.log", true
# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart
После этого в /etc/nginx/nginx.conf (или /etc/nginx/sites_enabled/your_conf_file):
upstream your_upstream {
server unix:///var/www/your_app/tmp/your_sock.sock;
}
server {
# listen 443;
listen 80;
server_name your_domain.ru;
root /var/www/your_app/public;
client_max_body_size 32m;
# настройки для HTTPS
# ssl on;
# ssl_certificate /etc/letsencrypt/live/your_domain.ru/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/your_domain.ru/privkey.pem;
location / {
proxy_pass http://your_upstream; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# настройки ниже нужны, если используется Action Cable
# location /cable {
# proxy_pass http://your_upstream;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# }
#эти четыре настройки ниже нужны, если используете SSL
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Forwarded-Ssl on; # Optional
# proxy_set_header X-Forwarded-Port $server_port;
# proxy_set_header X-Forwarded-Host $host;
}
location ~* ^/assets/ {
# Per RFC2616 - 1 year maximum expiry
expires 1y;
add_header Cache-Control public;
add_header Last-Modified "";
add_header ETag "";
break;
}
}
#для автоматического перенаправления на https (если используется):
server {
listen 80;
server_name your_domain.ru;
rewrite ^ https://$server_name$request_uri? permanent;
}
После этого могут возникнуть только проблемы с правами доступа к файлу сокета. По логам выяснять и решать.