Los detalles:
Servidor de producción: Centos 7
Servidor web: Apache 2.4.6
Ruby: 2.4.2
Esta guía es un compendio de varias guías que se pueden encontrar en internet.
Assets
Este archivo es importante para poder cargar los assets.
#/etc/httpd/conf.d/puma.conf
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RequestHeader unset X-Forwarded-Proto
<locationmatch "^/assets/.*$">
Header unset ETag
FileETag None
ExpiresActive On
ExpiresDefault "access plus 1 year"
</locationmatch>
<locationmatch "^/assets/.*\.(css|js)$">
RewriteEngine on
RewriteCond %{HTTP:Accept-Encoding} \b(x-)?gzip\b
RewriteCond %{REQUEST_FILENAME}.gz -s
RewriteRule ^(.+)$ $1.gz
</locationmatch>
<locationmatch "^/assets/.*\.css\.gz$">
ForceType text/css
Header set Content-Encoding gzip
Header add Vary Accept-Encoding
</locationmatch>
<locationmatch "^/assets/.*\.js\.gz$">
ForceType application/javascript
Header set Content-Encoding gzip
Header add Vary Accept-Encoding
</locationmatch>
AddOutputFilterByType DEFLATE text/html
Apache
Configuramos el archivo /etc/httpd/conf/httpd.conf:
<VirtualHost 111.222.333.444:80>
ServerName puma.web.com
DocumentRoot /home/puma/public_html/puma/public
include /etc/httpd/conf.d/puma.conf
Redirect permanent / https://puma.web.com/
<Directory /home/puma/public_html/puma/public>
AllowOverride All Options=FollowSymLinks,MultiViews
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 111.222.333.444:443>
ServerName puma.web.com
DocumentRoot /home/puma/public_html/puma/public
include /etc/httpd/conf.d/puma.conf
RewriteRule ^/(.*)$ https://0.0.0.0:9294%{REQUEST_URI} [P]
<Directory /home/puma/public_html/puma/public>
AllowOverride All Options=FollowSymLinks,MultiViews
Order deny,allow
Allow from all
</Directory>
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLEngine on
SSLCertificateFile /home/puma/public_html/puma/FILE.cert
SSLCertificateKeyFile /home/puma/public_html/puma/FILE.key
SSLProtocol +TLSv1.2
SSLCACertificateFile /home/puma/public_html/puma/FILE.crt
</VirtualHost>
Puma
Se tiene que iniciar usando dos puertos uno para http y el otro para https, de la siguiente manera:
puma -d -b "ssl://127.0.0.1:9294?key=FILE.key&cert=FILE.cert&verify_mode=none&ca=FILE.crt" -b "tcp://127.0.0.1:9293" -e production
Cambiando los nombres de los archivo FILE.* por los de su certificado
Los puertos pueden ser cualquiera que no estén siendo usandos, podrían ser el 3000 y 3001 no hay problema.