En una de migraciones que tuve realizar tenía el siguiente escenario: Un proyecto funcionando en Rails con Unicorn corriendo en el puerto 8080, y el tráfico http (80) estaba redireccionado a ese puerto mediante Iptables.
Lo que se debía hacer era montar en ese mismo servidor un sitio web que funciona con PHP, Apache y MySQL. La solución es usar Apache como frontal (podría haber sido Nginx) y en modo proxy el servicio en Rails corriendo con Unicorn.
Las configuraciones para los dos servicio (sitio web y proyecto en Rails) de Apache2 serían
Sitio web
<VirtualHost *> DocumentRoot /var/www/web ServerAlias dominioweb.com <Directory "/var/www/web"> AllowOverride All Allow from All DirectoryIndex index.php Require all granted </Directory> CustomLog /var/log/apache2/dominioweb_access.log combined ErrorLog /var/log/apache2/dominioweb_error.log </VirtualHost>
Proyecto en Rails
<VirtualHost *> ServerName proyectorails.com RewriteEngine On ProxyRequests Off ProxyPreserveHost On ProxyPass / http://127.0.0.1:8080/ <Location /> ProxyPassReverse / Order deny,allow Allow from all </Location> # Custom log file locations ErrorLog /var/log/apache2/proyectorails_error.log CustomLog /var/log/apache2/proyectorails.log combined </VirtualHost>
Para esto, se debe tener activado los modulos proxy, en el caso de Debian y derivados se activa con
a2enmod proxy