Mes: enero 2017

Nginx como proxy inverso

Hace tiempo contaba cómo configurar Lighttpd como proxy inverso. En esta ocasión haremos lo mismo pero con Nginx.

Nuestra intención es poder acceder a dos instancias de Calibre Server y que para ello el Nginx nos solicite usuario y contraseña.

Como siempre, lo primero es instalar el Nginx:

sudo apt install nginx-light

Nota: habréis visto que en los repositorios de Raspbian existen varios sabores de Nginx. Para nuestro propósito con la versión light es suficiente.

Una vez instalado detenemos el servidor:

sudo systemctl stop nginx

Y editamos el fichero de configuración del Nginx:

sudo vi /etc/nginx/sites-available/default

El fichero de configuración del Nginx tiene muchas opciones y es muy flexible. Yo solo comentaré lo necesario para nuestro proxy inverso:

location /libros1/ {
       proxy_pass http://127.0.0.1:8081;
       auth_basic "Restricted Content";
       auth_basic_user_file /etc/nginx/passwords;
}

location /libros2/ {
       proxy_pass http://127.0.0.1:8082;
       auth_basic "Restricted Content";
       auth_basic_user_file /etc/nginx/passwords;
}

Explico un poco los parámetros tomando como ejemplo el «libros1«:

  • location: este será el contexto de la URL donde será accesible el contenido. La URL final quedaría más o menos así: http://miraspberrypi/libros1
  • proxy_pass: es la IP y el puerto donde se encuentra el contenido. http://127.0.0.1:8081 en el ejemplo
  • auth_basic y auth_basic_user_file indican al Nginx que ha de pedir credenciales y que en el fichero /etc/nginx/passwords encontrará las credenciales válidas.

Y eso es todo, ya solo nos queda iniciar el Nginx:

sudo systemctl start nginx

¡Y a disfrutar!

PD: Para crear el fichero de passwords hemos de instalar el siguiente paquete:

sudo apt install apache2-utils

Y seguir las mismas instrucciones que comentaba en el post de Lighttpd.