Configurar Nginx como Proxy Inverso
La función de Proxy Inverso proporciona funciones interesantes en un servidor web, por ejemplo agrega una capa de seguridad a las conexiones, se puede utilizar como gestor de carga, restringe el acceso a rutas, evita ataques … etc.
En servidores web se suele utilizar conjuntamente con Apache, siendo Nginx el que sirve los contenidos estáticos mientras los dinámicos los redirige al servidor Apache mejorando la velocidad del sitio web.
También se suele utilizar para proteger servidores web express que a su vez sirven aplicaciones de Nodejs.
La configuración de Nginx como servidor Proxy Inverso es bastante sencilla, en el siguiente ejemplo mostramos la configuración para una aplicación Nodejs, para ello crearemos un site virtual en /etc/nginx/sites-avalibles con las siguientes líneas de configuración:
Donde podemos ver que se crea un listener en el puerto 80 que atenderá a cualquier dominio (server_name: _;) posteriormente se define la redirección para una ubicación concreta de la web, en este caso, cuando se acceda a la ubicación raíz (“/”) la petición será redirigida a http://localhost:3000 En este caso también podemos observar que hemos protegido la web con usuario y contraseña (auth_basic) para impedir el acceso a la web sin credenciales.
Si queremos que la redirección no se trate como tal deberemos agregar las siguientes líneas de configuración a la sección del proxy:
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;