De acordo com Richard, de seu comentário no post original, a solução original que surgiu não é que é ruim.
No entanto, como gosto de não me repetir, optei por incluir um arquivo que contém a parte de configuração comum entre @puma
e @puma_ws
.
Então, estou acabando com algo assim:
/etc/nginx/puma_proxy.conf
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
Arquivo de configuração do host
upstream puma {
server unix:///path/to/socket.sock;
}
server {
listen 80;
server_name example.com;
root /var/www/public;
location / {
try_files $uri/index.html $uri @puma;
}
location ~ ^/api/websocket {
try_files $uri/index.html $uri @puma_ws;
}
location @puma {
include /etc/nginx/puma_proxy.conf
proxy_pass http://puma;
}
location @puma_ws {
include /etc/nginx/puma_proxy.conf
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://puma;
}
}
Publicando isso aqui caso alguém realmente goste desse jeito.
Por favor, diga-me se você tem uma maneira melhor de lidar com essa situação, eu adoraria ter sua opinião!