# Configuración de Apache para recibir la IP final detrás de un proxy

- Link: https://binariocero.com/linux/configuracion-de-apache-para-recibir-la-ip-final-detras-de-un-proxy
- Published: 2025-01-09T17:06:38+01:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

Guía paso a paso para activar la recepción de la IP final en Apache cuando estás
detrás de un proxy, modificando los registros de logs y activando el módulo `mod_remoteip`.
Esto se aplicará globalmente a través del archivo `apache2.conf`:

#### **Paso 1: Habilitar el módulo `mod_remoteip`**

 1. Abre una terminal en tu servidor.
 2. Ejecuta el siguiente comando para habilitar el módulo `mod_remoteip`:
    `sudo a2enmod
    remoteip`
 3. Reinicia Apache para cargar el módulo:
    `sudo systemctl restart apache2`

#### **Paso 2: Configurar el archivo `apache2.conf`**

 1. Abre el archivo de configuración principal de Apache:
    `sudo nano /etc/apache2/apache2.
    conf`
 2. Añade las siguientes directivas al final del archivo para configurar `mod_remoteip`:
    `#
    Configuración para obtener la IP real del cliente final ``RemoteIPHeader X-Forwarded-
    For ``RemoteIPTrustedProxy 192.168.1.1 10.0.0.1 # Sustituye por las IPs de tus 
    proxies confiables ``RemoteIPProxyProtocol On ``# Redefinir los formatos de logs
    para registrar la IP real del cliente ``LogFormat "%a %l %u %t \"%r\" %>s %O \"%{
    Referer}i\" \"%{User-Agent}i\"" combined ``LogFormat "%v:%p %a %l %u %t \"%r\" %
    >s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined`
 3.  * **`RemoteIPHeader`**: Especifica el encabezado HTTP que contiene la IP original
       del cliente (usualmente `X-Forwarded-For`).
     * **`RemoteIPTrustedProxy`**: Define las IPs de los proxies confiables. Sustituye
       las IPs por las de tu red. **(Esto es opcional)**
     * **`RemoteIPProxyProtocol On`**: Habilita el uso del protocolo de proxy remoto.

#### **Paso 3: Verificar la configuración de logs**

Si deseas que la configuración de logs se aplique globalmente:

 1. Busca en el archivo `apache2.conf` las líneas relacionadas con `LogFormat` y `CustomLog`.
 2. Modifica o reemplaza las directivas existentes para usar el nuevo formato `combined`
    o `vhost_combined` que incluye `%a` (la IP real del cliente):
    `CustomLog ${APACHE_LOG_DIR}/
    access.log combined`

Esta linea también podemos encontrarla en los virtual hosts que tengamos configurados,
pero solo definirlo en uno de los dos sitios.

#### **Paso 4: Reiniciar Apache**

Aplica los cambios reiniciando Apache:

    ```wp-block-preformatted
    sudo systemctl restart apache2
    ```

#### **Paso 5: Verificar la configuración**

 1. Realiza una solicitud HTTP desde un cliente detrás del proxy.
 2. Revisa los registros de acceso para confirmar que ahora se registra la IP real 
    del cliente:
    `sudo tail -f /var/log/apache2/access.log `Deberías ver la IP real
    del cliente registrada en lugar de la IP del proxy.

Con estos pasos, la configuración estará habilitada globalmente en tu servidor Apache,
independientemente de los hosts virtuales configurados.
