Slim 3 en Apache como proxy de Nginx

Supongo que si has llegado a este post es que conoces Slim, pero para los que no, voy a hacer una pequeña introducción. Slim es un micro framework PHP que te ayuda a escribir con rapidez aplicaciones web simples pero potentes y APIs. Aunque esa es su definición, Slim es realmente útil a la hora de crear servicios web. Ya va por la versión número 3 y aunque no tiene ni página en la Wikipedia, es bastante recomendable.


Bien, yendo al grano. Si bien en su página web de documentación vienen detalladas las configuraciones para nginx, apache y otros servidores, lo que no viene es la configuración si tenemos un Nginx como front que utiliza Apache como proxy para las peticiones de PHP. Para este caso concreto lo que debemos hacer es configurar Nginx para que envíe la petición tal y como la recibe a Apache y que apache se encargue de procesarla.

Imaginemos que el servicio web se encuentra en una subcarpeta de nuestra aplicación, /api, de manera que accedemos /api/public.

Esta es la configuración para Nginx

location /api/ {
 proxy_set_header X-Real-IP  $remote_addr;
 proxy_set_header X-Forwarded-For $remote_addr;
 proxy_set_header Host your.host.com;
 proxy_pass protocol://your.route.com:port;
}

Con esto le estamos diciendo a Nginx que todo lo que venga en esa ruta lo envíe directamente a Apache sin procesarlo. Es duplicar la configuración para archivos PHP

Esta es la configuración para el subdominio en Apache

AllowOverride All
Y finalmente el archivo .htaccess que ubicaremos en la carpeta /api/public/

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

Recordar tener habilitado mod_rewrite en Apache.

Comentarios