Infogérant - Dompteur de serveurs - Logo principal

Configurer Apache pour récupérer l’IP réelle du visiteur derrière Cloudflare

Lorsque votre site est protégé par Cloudflare, les requêtes HTTP arrivent à votre serveur via leurs serveurs proxy.
Par défaut, Apache ne voit donc que l’adresse IP de Cloudflare, et non celle du visiteur réel.
Cela pose des problèmes pour les logs, les règles de sécurité, ou les outils comme Fail2ban.

Pourquoi et comment configurer Apache avec Cloudflare


Pour que votre serveur identifie correctement l’adresse IP d’origine des visiteurs, il est nécessaire d’adapter sa configuration.
Les objectifs sont de :

  • utiliser l’en-tête `CF-Connecting-IP` envoyé par Cloudflare,
  • déclarer les adresses IP Cloudflare comme proxies de confiance,
  • automatiser la mise à jour des IP Cloudflare via un script Bash.

Exemple de configuration Apache : cloudflare.conf

Ce fichier peut ensuite être inclus dans votre configuration Apache, par exemple via un IncludeOptional /etc/apache2/conf.d/cloudflare.conf.

Exemple :

RemoteIPHeader CF-Connecting-IP
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 103.22.200.0/22
...

 Script Bash pour générer et maintenir la configuration Apache à jour


Voici un script que vous pouvez exécuter régulièrement (via un `cron` par exemple) pour générer automatiquement la liste des IP Cloudflare à jour :

#!/bin/bash
set -e

# Sources officielles des IP Cloudflare
IPv4="https://www.cloudflare.com/ips-v4"
IPv6="https://www.cloudflare.com/ips-v6"

# Nom du fichier de configuration à générer
conf="cloudflare.conf"
tmpfile="/tmp/ips.$$"

# Téléchargement des plages IPv4
wget -q "${IPv4}" -O - > "${tmpfile}"

# Saut de ligne avant d’ajouter les IPv6
echo "" >> "${tmpfile}"

# Téléchargement des plages IPv6
wget -q "${IPv6}" -O - >> "${tmpfile}"

# Génération du fichier de configuration Apache
{
    echo 'RemoteIPHeader CF-Connecting-IP'
    while read -r ip; do
        [[ -n "$ip" ]] && echo "RemoteIPTrustedProxy $ip"
    done < "${tmpfile}"
} > "${conf}"

# Nettoyage du fichier temporaire
rm -f "${tmpfile}"

Intégrer le fichier dans Apache


Placez le fichier `cloudflare.conf` dans le dossier de configuration global d’Apache :

mv cloudflare.conf /etc/apache2/conf-available/cloudflare.conf
a2enconf cloudflare
systemctl reload apache2

Vérifiez que le module `mod_remoteip` est bien activé :

a2enmod remoteip
systemctl reload apache2

Ensuite, Apache utilisera correctement les IP réelles des visiteurs transmises par Cloudflare.

Confier la gestion de votre serveur Apache ou Nginx à des experts


Gagnez en performance, sécurité et sérénité en laissant nos spécialistes configurer, optimiser et superviser votre serveur web.
Que vous utilisiez Apache ou Nginx, nous adaptons chaque paramètre à vos besoins pour garantir un fonctionnement optimal.

Configuration Nginx pour récupérer l’IP réelle du visiteur avec Cloudflare


Avec Nginx, il faut configurer le module `real_ip` pour extraire l’adresse IP réelle des visiteurs à partir de l’en-tête `CF-Connecting-IP`.

Exemple de configuration Nginx : cloudflare.conf

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
...

real_ip_header CF-Connecting-IP;
real_ip_recursive on;

Vous pouvez automatiser la génération de ces lignes en Bash également.

Script Bash pour générer et maintenir la configuration Nginx à jour

#!/bin/bash
set -e

IPv4="https://www.cloudflare.com/ips-v4"
IPv6="https://www.cloudflare.com/ips-v6"
conf="cloudflare-nginx.conf"
tmpfile="/tmp/ips.$$"

wget -q "${IPv4}" -O - > "${tmpfile}"
echo "" >> "${tmpfile}"
wget -q "${IPv6}" -O - >> "${tmpfile}"

{
    while read -r ip; do
        [[ -n "$ip" ]] && echo "set_real_ip_from $ip;"
    done < "${tmpfile}"
    echo ""
    echo "real_ip_header CF-Connecting-IP;"
    echo "real_ip_recursive on;"
} > "${conf}"

rm -f "${tmpfile}"

Incluez ensuite ce fichier dans votre `nginx.conf`, puis redémarrez Nginx :

nginx -t && sudo systemctl reload nginx

Vous voulez externaliser la gestion de votre serveur Apache ou Nginx ?


Notre équipe prend en charge la configuration, la sécurisation et le suivi de vos serveurs, avec ou sans Cloudflare.

Découvrez nos prestations d’infogérance.

Un serveur mieux configuré, plus rapide, et plus sécurisé — sans effort de votre part.