Cómo crear un proxy inverso en Nginx

NGINX es un servidor web versátil y de alto rendimiento ampliamente utilizado como servidor proxy inverso. Un proxy inverso es un intermediario para las solicitudes de los clientes y las distribuye a uno o más servidores backend. Esta configuración beneficia el equilibrio de carga, mejora la seguridad y proporciona alta disponibilidad. El uso de NGINX como proxy inverso puede mejorar la escalabilidad y confiabilidad de sus servicios web.

Esta guía demostrará cómo crear un proxy inverso en NGINX y cubrirá los pasos de configuración necesarios para enrutar las solicitudes de los clientes a los servidores backend de manera eficiente.

Crear y configurar un proxy inverso en Nginx

Configurar un proxy inverso básico en Nginx

Primero, para comenzar a configurar Nginx como proxy inverso, acceda al archivo de configuración de Nginx. Normalmente, este archivo se encuentra en /etc/nginx/nginx.conf. Ábrelo con tu editor de texto preferido, como por ejemplo sudo Nano:

sudo nano /etc/nginx/nginx.conf

Dentro del archivo de configuración, concéntrate en el bloque http. Aquí insertará un bloque de servidor, la piedra angular de su configuración de proxy inverso. El bloque del servidor escucha en un puerto específico, generalmente el puerto 80, el tráfico HTTP. Dentro de este bloque, la ubicación/directiva le dice a Nginx cómo manejar las solicitudes entrantes. Utilice la directiva proxy_pass para redirigir estas solicitudes al servidor backend, especificado por su dirección IP o nombre de host.

Por ejemplo, la configuración podría verse así:

http {
    ...
    server {
        listen 80;
        location / {
            proxy_pass http://backendserver_address;
        }
    }
}

Recuerde reemplazar backendserver_address con la dirección real de su servidor backend. Esta configuración simple le dice a Nginx que reenvíe todas las solicitudes HTTP entrantes al servidor backend especificado.

Configuración avanzada de proxy inverso en Nginx

En una configuración más avanzada, es posible que desee configurar aspectos adicionales del proxy inverso. Esto puede incluir configuraciones para equilibrio de carga, terminación SSL o almacenamiento en caché.

Implementación del equilibrio de carga

Si está operando varios servidores backend, Nginx puede distribuir el tráfico entrante entre ellos, mejorando el rendimiento y la confiabilidad. Para equilibrar la carga, modificaría la directiva proxy_pass para que apunte a un grupo de servidores definidos en un bloque ascendente. Por ejemplo:

http {
    upstream backend_servers {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend_servers;
        }
    }
}

Esta configuración permite a Nginx equilibrar la carga entre backend1.example.com y backend2.example.com.

Configurar la terminación SSL

Para la terminación SSL, asegúrese de que el bloque del servidor escuche en el puerto 443 e incluya el certificado SSL y las ubicaciones del archivo clave. La configuración podría parecerse a:

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backendserver_address;
    }
}

Esta configuración permite a Nginx manejar conexiones SSL y descifrar solicitudes antes de pasarlas a los servidores backend.

Finalizando cambios

Después de configurar Nginx, pruebe la configuración para detectar errores de sintaxis con:

nginx -t

Si la prueba pasa, recarga Nginx para aplicar los cambios usando:

sudo systemctl reload nginx

Este paso garantiza que los cambios surtan efecto sin interrumpir las conexiones actuales.

Aprendizaje adicional: configuración de valores de encabezado de proxy Nginx

Al configurar Nginx como proxy inverso, es importante configurar los valores del encabezado del proxy correctamente. Estos encabezados son cruciales para transmitir los detalles de la solicitud del cliente original a los servidores backend. Esta información puede incluir la dirección IP del cliente, el protocolo original de la solicitud y más. La configuración adecuada de estos encabezados garantiza que los servidores backend tengan el contexto que necesitan para responder adecuadamente a las solicitudes.

Comprender los encabezados de proxy

Los encabezados de proxy son esenciales en una configuración de proxy inverso, ya que contienen información sobre la solicitud original del cliente. Esta información es necesaria para que los servidores backend tomen decisiones informadas sobre el manejo de las solicitudes entrantes. Por ejemplo, conocer la dirección IP original del cliente puede ser importante para fines de registro, análisis o seguridad.

Configuraciones comunes de encabezado de proxy

Algunos de los encabezados de proxy comunes que puedes configurar en Nginx incluyen:

  • X-Real-IP: este encabezado se utiliza para pasar la dirección IP del cliente original al servidor backend.
  • X-Forwarded-For: Similar a X-Real-IP, este encabezado lleva una lista de todos los servidores por los que ha atravesado la solicitud, incluida la IP del cliente.
  • X-Forwarded-Proto: este encabezado indica el protocolo (HTTP o HTTPS) utilizado en la solicitud original del cliente.

Implementación de la configuración del encabezado de proxy en Nginx

Para establecer estos encabezados en su configuración de Nginx, debe modificar el bloque de ubicación dentro de su bloque de servidor. A continuación se muestra un ejemplo de cómo puede configurar estos encabezados:

server {
    listen 80;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://backendserver_address;
    }
}

En esta configuración, $remote_addr y $scheme son variables que Nginx completa automáticamente con la dirección IP del cliente y el esquema de la solicitud (HTTP o HTTPS), respectivamente.

Mejores prácticas para encabezados proxy

Al configurar encabezados de proxy, es importante considerar la seguridad y precisión de la información reenviada. Para evitar posibles suplantaciones de identidad, asegúrese de que sus servidores backend estén configurados para confiar en estos encabezados solo cuando provengan de su proxy inverso Nginx.

Conclusión

Al configurar NGINX con éxito como proxy inverso, puede optimizar su infraestructura web para obtener un mejor rendimiento, seguridad y escalabilidad. Supervise y ajuste periódicamente su configuración para garantizar una distribución de carga y tiempos de respuesta óptimos. La implementación de un proxy inverso con NGINX proporciona una solución sólida para gestionar las solicitudes de los clientes y mantener una alta disponibilidad para sus servicios web.

Joshua James
Sígueme
Últimas entradas de Joshua James (ver todo)

Deja un comentario