Recibe actualizaciones por: rss | twitter | email

Proxy_pass si 404

Escrito por:
Fecha: 2015-05-24 17:32:13 00:00

Inglés

Si no se encuentra pasar al BackEnd

Nginx funciona muy bien como proxy reverso, es decir actuando como primer servidor y pasando atras los requerimientos basado en diferentes condiciones.

Lo más común es pasar atras todos los requerimientos de Wordpress, es decir PHP, al interprete PHP-FPM, de todos modos tambien puedes para pasar hacia atrás lo que no encuentre, lo que no pueda servir, en otras palabras todos los códigos 404.

En este sitio he cambiado unas cuantas veces la estructura del sitio, por lo que tengo un archivo .htaccess con todas las redirecciones necesarias para hacer que todo siga funcionando, convertir esto a Nginx es incomodo y como de todos modos tengo Apache funcionando en otro servidor por otras aplicaciones que lo requieren, pues lo único que hago es decirle a Nginx que si no encuentra el archivo, que le pregunte a Apache, Apache a su vez responde con la nueva ubicación del sitio y Nginx puede entregar la página la usuario.

Esto se logra así.

location / {
    index index.html
    try_files $uri $uri/ @apache;
}

El bloque de arriba indica que el índice es el archivo index.html, luego le dice que cualquier requerimiento lo busque como archivo, y luego como directorio, si no lo encuentra que se lo pase a @apache, ahora vamos a definir @apache

location @apache {
	proxy_pass http://1.2.3.4:81;
	proxy_redirect off;
	proxy_set_header Host $host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Eso servirá, ahora Nginx buscará el los archivos en el disco, y si no lo encuentra lo pasará a Apache para que resuelva el problema.