Ir al contenido
GProxy
Registro
Гайды 3 min de lectura 31 vistas

Apache como Proxy Inverso

Domina Apache mod_proxy para configurar un proxy inverso. Esta guía cubre configuración esencial, balanceo de carga y mejores prácticas de seguridad.

Apache como Proxy Inverso

Apache puede funcionar como un proxy inverso, reenviando las solicitudes del cliente a los servidores backend y devolviendo sus respuestas, utilizando el módulo mod_proxy y sus submódulos relacionados.

Un proxy inverso actúa como intermediario para las solicitudes del cliente, dirigiéndolas a uno o más servidores backend internos. Presenta una interfaz unificada a internet mientras oculta la arquitectura de red interna. Los beneficios incluyen seguridad mejorada, equilibrio de carga, terminación SSL/TLS, almacenamiento en caché y gestión simplificada del backend.

Habilitación de mod_proxy

Para configurar Apache como un proxy inverso, el módulo principal mod_proxy y submódulos específicos deben estar habilitados. Estos módulos proporcionan diferentes soportes de protocolo y características.

Módulos esenciales:

  • mod_proxy: El módulo proxy principal.
  • mod_proxy_http: Para proxy de tráfico HTTP y HTTPS.
  • mod_proxy_balancer: Requerido para el equilibrio de carga entre múltiples servidores backend.
  • mod_proxy_wstunnel: Para proxy de WebSocket.
  • mod_ssl: Si Apache manejará la terminación SSL/TLS para las conexiones del cliente.

Habilite los módulos usando el comando a2enmod en sistemas basados en Debian/Ubuntu, o descomentando las directivas LoadModule en httpd.conf en sistemas basados en CentOS/RHEL:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod proxy_wstunnel
sudo a2enmod ssl
sudo systemctl restart apache2

Configuración Básica de Proxy Inverso HTTP

Las directivas fundamentales para un proxy inverso son ProxyPass y ProxyPassReverse. La configuración se suele colocar dentro de un bloque <VirtualHost> o directamente en httpd.conf.

<VirtualHost *:80>
    ServerName yourdomain.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Require all granted
    </Proxy>

    # Proxy all requests for /app to a backend server
    ProxyPass /app http://backend-app-server:8080/app
    ProxyPassReverse /app http://backend-app-server:8080/app

    # Proxy all requests for the root path / to another backend
    ProxyPass / http://backend-web-server:8000/
    ProxyPassReverse / http://backend-web-server:8000/

    # For SSL/TLS termination at Apache, and forwarding HTTP to backend
    # RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>

Directivas Clave

  • ProxyRequests Off: Esto es crítico. Deshabilita las capacidades de proxy de reenvío de Apache, evitando que actúe como un proxy abierto, lo cual es un riesgo de seguridad significativo. Para un proxy inverso, esta directiva siempre debe establecerse en Off.
  • ProxyPreserveHost On: Esta directiva asegura que el encabezado Host original de la solicitud del cliente se pase al servidor backend. Si está en Off, el encabezado Host se establecerá con el nombre de host y el puerto del servidor backend.
  • ProxyPass [path] [url]: Mapea una ruta URL local (path) a una URL de backend (url). Apache intercepta las solicitudes que coinciden con path y las reenvía a url.
    • Ejemplo: ProxyPass /app http://backend-app-server:8080/app significa que una solicitud a http://yourdomain.com/app/page.html se reenvía a http://backend-app-server:8080/app/page.html.
  • ProxyPassReverse [path] [url]: Reescribe los encabezados Location, Content-Location y URI en las respuestas HTTP del servidor backend. Esto asegura que las redirecciones o enlaces generados por el backend apunten de nuevo a la URL del proxy de cara al público, evitando que los clientes queden expuestos a URLs internas.
  • <Proxy *>: Define el control de acceso para el propio proxy. Require all granted permite que todos los clientes usen el proxy. Para una seguridad más estricta, se pueden permitir direcciones IP o redes específicas.

Características Avanzadas de mod_proxy

Equilibrio de Carga

mod_proxy_balancer permite distribuir las solicitudes entrantes entre múltiples servidores backend, mejorando la disponibilidad y la escalabilidad.

<VirtualHost *:80>
    ServerName app.yourdomain.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy balancer://mycluster>
        BalancerMember http://backend1.internal:8080 route=1 loadfactor=10
        BalancerMember http://backend2.internal:8080 route=2 loadfactor=10
        # Optional: ProxySet for specific balancer settings
        ProxySet lbmethod=byrequests stickysession=JSESSIONID nofailover=Off
        # For session stickiness, the backend must set a cookie like JSESSIONID
    </Proxy>

    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/

    <Location "/balancer-manager">
        SetHandler balancer-manager
        Require ip 192.168.1.0/24 # Restrict access to internal network
    </Location>
</VirtualHost>

Atributos de BalancerMember

| Atributo | Descripción |

Actualizado: 04.03.2026
Volver a la categoría

Pruebe nuestros proxies

20,000+ proxies en 100+ países del mundo

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.