Usar NGINX como Reverse Proxy es una opción muy popular y re­co­me­n­da­ble. Para co­n­fi­gu­rar­lo, solo necesitas instalar NGINX, crear un archivo de co­n­fi­gu­ra­ción y ajustar las co­n­fi­gu­ra­cio­nes del servidor. Para terminar, puedes comprobar que todo funcione co­rre­c­ta­me­n­te uti­li­za­n­do Gunicorn.

Pasos para instalar NGINX como Reverse Proxy en Ubuntu 22.04

Para contar con un servidor web seguro, flexible y eficiente en el uso de recursos, es re­co­me­n­da­ble utilizar un Reverse Proxy. Este se coloca entre el cliente y el servidor web sin que los usuarios noten su presencia. Una de las mejores opciones para gestionar todas las so­li­ci­tu­des entrantes es NGINX como Reverse Proxy. A co­n­ti­nua­ción, te ex­pli­ca­mos cómo in­s­ta­lar­lo y co­n­fi­gu­rar­lo en Ubuntu 22.04.

Consejo

En nuestra Digital Guide también puedes encontrar artículos acerca de la in­s­ta­la­ción de NGINX en Ubuntu 20.04 y sobre qué es un servidor Proxy.

Re­qui­si­tos para una correcta in­s­ta­la­ción

Para poder instalar un NGINX Reverse Proxy en Ubuntu 22.04, necesitas lo siguiente:

  • tener instalado un servidor Ubuntu,
  • la dirección IP o el dominio Unix del servidor,
  • el dominio de tu servidor,
  • pri­vi­le­gios sudo para el servidor.

Instalar NGINX como Reverse Proxy

Actualiza tu re­po­si­to­rio a través del terminal en el primer paso para tener acceso a los paquetes más recientes. Después, instala NGINX uti­li­za­n­do el comando apt install. Escríbelo de la siguiente forma:

$ sudo apt update
$ sudo apt install nginx
bash

Confirma con [Y] y pulsa [Enter] para im­ple­me­n­tar los ajustes.

A co­n­ti­nua­ción, configura tu firewall para que NGINX reciba acceso a tu servidor. Para ello, debes añadir una excepción con el siguiente comando:

$ sudo ufw allow 'Nginx HTTP'
bash

Fi­na­l­me­n­te, comprueba que la in­s­ta­la­ción de NGINX se ha realizado co­rre­c­ta­me­n­te. Este es el código que debes usar para ello:

$ systemctl status nginx
bash

Si NGINX se ha instalado co­rre­c­ta­me­n­te, obtendrás un resultado como este:

nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
      Active: active (running) since Mon 2024-06-24 06:52:46 UTC; 39min ago
         Docs: man:nginx(8)
    Main PID: 9919 (nginx)
        Tasks: 2 (limit: 2327)
      Memory: 2.9M
          CPU: 50ms
      CGroup: /system.slice/nginx.service
                 ├─9919 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
                 └─9920 "nginx: worker process"
bash

Crear un archivo de co­n­fi­gu­ra­ción y pe­r­so­na­li­zar el servidor

Después, configura tu bloque de servidor para preparar bien el NGINX Reverse Proxy para tu sistema. Para ello, abre un nuevo archivo de co­n­fi­gu­ra­ción con el editor de texto nano. Usa el siguiente comando, re­em­pla­za­n­do “tu_dominio” por el nombre real de tu dominio:

$ sudo nano /etc/nginx/sites-available/tu_dominio
bash

Una vez que el archivo esté abierto, añade el siguiente contenido. Sustituye los ma­r­ca­do­res “tu_dominio” y “server_adresse” por tu dominio y la IP o el Unix Domain Socket de tu servidor:

server {
    listen 80;
    listen [::]:80;
    server_name tu_dominio www.tu_dominio;
        
    location / {
        proxy_pass http://server_adresse;
        include /etc/nginx/proxy_params;
    }
}
txt

Guarda y cierra el archivo. El contenido mostrado es el ajuste estándar de NGINX, que utiliza el puerto 80 para reac­cio­nar ante las so­li­ci­tu­des de tu dominio y servidor. La directiva proxy_pass es clave para que NGINX funcione como un Reverse Proxy. Si es necesario, también puedes co­n­fi­gu­rar se­r­vi­do­res adi­cio­na­les.

A co­n­ti­nua­ción, crea un enlace al di­re­c­to­rio sites-enabled, al que NGINX accede al principio. Utiliza este comando re­em­pla­za­n­do de nuevo el marcador “tu_dominio” por el nombre co­rre­s­po­n­die­n­te:

$ sudo ln -s /etc/nginx/sites-available/ihre_domain/etc/nginx/sites-enabled/
bash

Comprueba que no hay errores en la co­n­fi­gu­ra­ción:

$ sudo nginx -t
bash

Si no recibes ningún mensaje de error, puedes reiniciar el NGINX Reverse Proxy para aplicar todos los cambios. Para ello, introduce el siguiente comando:

$ sudo systemctl restart nginx
bash

Con ello, ya estará co­n­fi­gu­ra­do NGINX como Reverse Proxy. En el siguiente apartado te ex­pli­ca­mos cómo comprobar el proxy, pero se trata de un paso que no es obli­ga­to­rio para completar la co­n­fi­gu­ra­ción.

Comprobar el NGINX Reverse Proxy con Gunicorn

Para probar NGINX Reverse Proxy, siempre puedes utilizar tu servidor lla­má­n­do­lo a través de la shell. Como al­te­r­na­ti­va, puedes usar el servidor web HTTP Gunicorn, que se co­m­ple­me­n­ta muy bien con NGINX Reverse Proxy. En primer lugar, actualiza los paquetes e instala el servidor:

$ sudo apt update
$ sudo apt install gunicorn
bash

A co­n­ti­nua­ción, crea una función sencilla que se enviará como respuesta HTTP a tu navegador. Para ello, utiliza otra vez nano:

$ nano test.py
bash

Abre el archivo e introduce este código:

def app(environ, start_response):
	start_response("200 OK", [])
	return iter([b"Esto es una prueba"])
txt

Guarda y cierra el archivo. Después, inicia Gunicorn y accede al módulo de prueba:

$ gunicorn --worker=2 test:app
bash

El resultado debería tener este aspecto:

[2024-06-24 07:09:29 +0000] [10568] [INFO] Starting gunicorn 20.1.0
[2024-06-24 09:14:37 +0000] [10568] [INFO] Listening at: http://127.0.0.1 (10568)
[2024-06-24 09:14:37 +0000] [10568] [INFO] Using worker: sync
[2024-06-24 09:14:37 +0000] [10569] [INFO] Booting worker with pid: 10569
[2024-06-24 09:14:37 +0000] [10570] [INFO] Booting worker with pid: 10570
bash

De acuerdo con esto, Gunicorn está in­ter­ac­tua­n­do con la dirección estándar http://127.0.0.1:8000. En el último paso, abre tu navegador y accede al dominio que habías co­n­fi­gu­ra­do con NGINX. El NGINX Reverse Proxy debería mostrar el mensaje “Esto es una prueba”.

Ir al menú principal