Comparativa y Uso del Módulo Proxy en Nginx: nginx, nginx-full, nginx-extras y más

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Nginx es uno de los servidores web y proxies inversos más utilizados del mundo por su rendimiento, eficiencia y modularidad. En distribuciones como Debian y Ubuntu, existen diferentes variantes del paquete Nginx, como nginx, nginx-full y nginx-extras, cada una con su propósito. Este artículo explica sus diferencias, compatibilidades y cómo usar el módulo de proxy (ngx_http_proxy_module), fundamental para arquitecturas modernas como balanceadores de carga o gateways.

Diferencias entre los paquetes nginx, nginx-common, nginx-full y nginx-extras

PaqueteDescripciónMódulos incluidos
nginxMetapaquete que instala una de las variantes completas de Nginx.Depende del sistema, normalmente full
nginx-commonArchivos compartidos: configuración, scripts, documentación.
nginx-fullVersión estándar con todos los módulos oficiales de Nginx.Solo módulos oficiales
nginx-extrasVersión extendida con módulos oficiales y de terceros (más funcionalidades)Oficiales + módulos de terceros

¿Pueden convivir nginx-full y nginx-extras?

No. Ambos paquetes entran en conflicto porque proporcionan el mismo binario principal (/usr/sbin/nginx). Solo puedes tener uno instalado al mismo tiempo. Sin embargo, ambos dependen de nginx-common, que sí es compartido y puede coexistir con cualquiera de las variantes.

¿Cuál es el más completo?

nginx-extras es el paquete más completo, ya que incluye todo lo que ofrece nginx-full y además módulos de terceros que extienden las capacidades de Nginx.

Módulos adicionales que solo tiene nginx-extras:

  • headers-more: permite modificar o eliminar cabeceras HTTP.
  • echo: útil para testing y debugging.
  • auth-pam: soporte de autenticación PAM.
  • upload-progress: seguimiento de subidas.
  • upstream-fair: balanceo de carga justo.
  • http-dav-ext: soporte extendido de WebDAV.
  • set-misc + ndk: utilidades avanzadas para manipulación de variables.

Ideal para entornos donde se necesite alta flexibilidad o funcionalidad avanzada sin recompilar desde el código fuente.

Verificación del módulo proxy en Nginx

El módulo de proxy (ngx_http_proxy_module) está incluido por defecto tanto en nginx-full como en nginx-extras.

Puedes verificarlo con:

nginx -V 2>&1 | grep --color=auto http_proxy_module

Si el módulo aparece en la salida, está disponible y puedes usarlo directamente en tus configuraciones.

Cómo usar el módulo proxy en Nginx

Este módulo permite a Nginx funcionar como proxy inverso, redirigiendo las peticiones entrantes a uno o más servidores backend.

Ejemplo básico de configuración:

server {
listen 80;
server_name ejemplo.com;

location / {
proxy_pass http://127.0.0.1:3000; # Backend local
proxy_set_header Host $host;
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;
}
}

Este bloque reenvía todas las peticiones recibidas en ejemplo.com hacia el backend que escucha en 127.0.0.1:3000.

Recarga de configuración

Tras realizar los cambios:

sudo nginx -t           # Verifica la sintaxis
sudo systemctl reload nginx # Aplica los cambios sin reiniciar

Cache de contenido con proxy_cache

Nginx permite cachear las respuestas del backend para mejorar el rendimiento y reducir la carga:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=60m use_temp_path=off;

server {
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
}
  • proxy_cache_path: define dónde y cómo se guarda la caché.
  • proxy_cache: activa la caché para esta ubicación.
  • proxy_cache_valid: define la duración según el código HTTP.

Balanceo de carga con upstream

Puedes distribuir las peticiones entre múltiples servidores backend:

upstream backend {
server 192.168.0.101;
server 192.168.0.102;
}

server {
location / {
proxy_pass http://backend;
}
}

Para balanceos más avanzados (round robin, least connections, fair), se puede usar:

upstream backend {
least_conn;
server 192.168.0.101;
server 192.168.0.102;
}

El modo fair requiere el módulo upstream-fair, disponible en nginx-extras.

Control de cabeceras HTTP

Con proxy_set_header puedes modificar cabeceras hacia el backend:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

Con headers-more (solo en nginx-extras) puedes eliminar o sobreescribir cabeceras en las respuestas:

more_clear_headers 'Server';
more_set_headers 'X-Powered-By: Nginx';

Esto es útil para mejorar la privacidad o para cumplir con políticas de seguridad.

Seguridad adicional con proxy_hide_header

Puedes ocultar cabeceras del backend que no quieres que lleguen al cliente:

proxy_hide_header X-Powered-By;
proxy_hide_header Server;

También puedes usar add_header para añadir otras cabeceras de seguridad como Strict-Transport-Security, Content-Security-Policy, etc.

Conclusión

  • nginx-extras es el paquete más completo, ideal para administradores que necesitan módulos avanzados o de terceros.
  • El módulo ngx_http_proxy_module viene habilitado por defecto en nginx-full y nginx-extras.
  • nginx-full y nginx-extras no pueden coexistir en el mismo sistema.
  • El uso del módulo proxy es directo: no se activa, se usa mediante configuración (proxy_pass).
  • Se puede ampliar con funcionalidades como proxy_cache, balanceo de carga y control de cabeceras HTTP.
Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.