J'utilise Elastic Load Balancing pour mon serveur Web, et je peux voir l'adresse IP de mon équilibreur de charges dans les journaux d'accès. Comment puis-je plutôt capturer les adresses IP client ?

Vos journaux d'accès capturent l'adresse IP de votre équilibreur de charges car celui-ci établit la connexion à vos instances. Vous devez effectuer une configuration supplémentaire pour capturer les adresses IP client dans vos journaux d'accès.

Équilibreurs de charge d'applications et équilibreurs de charge classiques avec écouteurs HTTP/HTTPS (Apache)

1.    Ouvrez votre fichier de configuration Apache dans l'éditeur de texte de votre choix. L'emplacement varie selon la configuration, par exemple /etc/httpd/conf/httpd.conf pour Amazon Linux et RHEL, ou /etc/apache2/apache2.conf pour Ubuntu.

2.    Dans la section LogFormat, ajoutez %{X-Forwarded-For}i comme suit :

    ...
    LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    ...

3.    Enregistrez vos modifications.

4.    Rechargez le service Apache.

Pour Sysvinit, les systèmes basés sur Debian (tels qu'Ubuntu) et SUSE (tels que SLES11) :

# /etc/init.d/apache2 reload

Pour Sysvinit, les systèmes basés sur RPM (tels que RHEL 6 et Amazon Linux) à l'exception de SUSE :

# /etc/init.d/httpd reload

Pour Systemd, les systèmes basés sur Debian (tels qu'Ubuntu) et SUSE (tels que SLES12) :

# systemctl reload apache2

Pour Systemd, les systèmes basés sur RPM (tels que RHEL 7 et Amazon Linux 2) à l'exception de SUSE :

# systemctl reload httpd

5.    Ouvrez vos journaux d'accès Apache. L'emplacement varie selon la configuration.

6.    Vérifiez que les adresse IP client sont maintenant enregistrées sous l'en-tête X-Forwarded-For.

Équilibreurs de charge d'applications et équilibreurs de charge classiques avec écouteurs HTTP/HTTPS (NGINX)

1.    Ouvrez votre fichier de configuration NGINX dans l'éditeur de texte de votre choix. Généralement, l'emplacement est /etc/nginx/nginx.conf.

2.    Dans la section LogFormat, ajoutez $http_x_forwarded_for comme suit :

http {
    ...
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    ...
}

3.    Enregistrez vos modifications.

4.    Rechargez votre fichier de configuration NGINX comme suit. Assurez-vous d'utiliser le chemin d'accès au fichier approprié pour votre configuration.

# sudo /etc/init.d/nginx reload

5.    Ouvrez vos journaux d'accès NGINX. L'emplacement varie selon la configuration.

6.    Vérifiez que les adresse IP client sont maintenant enregistrées sous l'en-tête X-Forwarded-For.

Équilibreurs de charge classiques avec écouteurs TCP/SSL (Apache)

1.    Ouvrez votre fichier de configuration Apache dans l'éditeur de texte de votre choix. L'emplacement varie selon la configuration, par exemple /etc/httpd/conf/httpd.conf pour Amazon Linux et RHEL, ou /etc/apache2/apache2.conf pour Ubuntu.

2. Assurez-vous que votre configuration Apache charge le module mod_remoteip (disponible pour Apache version 2.4.31 et ultérieures). Ce module inclut la directive RemoteIPProxyProtocol. Recherchez une ligne similaire à la suivante dans votre fichier de configuration :

Amazon Linux ou RHEL :

LoadModule remoteip_module modules/mod_remoteip.so

Ubuntu :

LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so

3.    Confirmez que le module mod_remoteip se charge :

$ sudo apachectl -t -D DUMP_MODULES | grep -i remoteip

4.    Vérifiez que la sortie contient une ligne similaire à la suivante :

remoteip_module (shared)

Important : si la ligne n'est pas renvoyée, le module n'est pas inclus ou chargé dans votre configuration. Veillez à activer le module avant de continuer.

5.    Ajoutez la ligne suivante dans votre fichier de configuration Apache pour activer la prise en charge du protocole proxy :

RemoteIPProxyProtocol On

6.    Modifiez la section LogFormat du fichier de configuration pour capturer l'adresse IP distante (%a) et le port distant (%{remote}p:) comme suit :

LogFormat "%h %p %a %{remote}p %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

7.    Enregistrez vos modifications.

8.    Rechargez le service Apache.

Pour Sysvinit, les systèmes basés sur Debian (tels qu'Ubuntu) et SUSE (tels que SLES11) :

# /etc/init.d/apache2 reload

Pour Sysvinit, les systèmes basés sur RPM (tels que RHEL 6 et Amazon Linux) à l'exception de SUSE : 

# /etc/init.d/httpd reload

Pour Systemd, les systèmes basés sur Debian (tels qu'Ubuntu) et SUSE (tels que SLES12) : 

# systemctl reload apache2

Pour Systemd, les systèmes basés sur RPM (tels que RHEL 7 et Amazon Linux 2) à l'exception de SUSE : 

# systemctl reload httpd

9.    Ouvrez les journaux d'accès Apache. L'emplacement varie selon la configuration.

10.    Vérifiez que les adresse IP client sont maintenant enregistrées sous l'en-tête du protocole de proxy.

11.    Activez la prise en charge du protocole proxy dans votre application cible.

Équilibreurs de charge classiques avec écouteurs TCP/SSL (NGINX)

1.    Ouvrez le fichier de configuration NGINX dans l'éditeur de texte de votre choix. Généralement, l'emplacement est /etc/nginx/nginx.conf.

2.    Modifiez la ligne listen de la section server pour activer proxy_protocol. Modifiez la ligne log_format de la section http pour définir proxy_protocol_addr. Par exemple :

 http {
    ...
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$proxy_protocol_addr"';
 
    access_log  /var/log/nginx/access.log  main;
    ...
}
server {
        ...
        listen  80  default_server proxy_protocol;        
        ...
        }
...
}

3.    Enregistrez vos modifications.

4.    Rechargez le fichier de configuration NGINX.

Pour les systèmes Sysvinit (tels qu'Amazon Linux, RHEL 6, SLES11 et Ubuntu 14.04) :

# /etc/init.d/nginx reload

Pour les systèmes Systemd (tels que RHEL 7, Amazon Linux 2, SLES12 et Ubuntu 16.04) : 

# systemctl reload nginx

5.    Ouvrez les journaux d'accès NGINX. L'emplacement varie selon la configuration.

6.    Vérifiez que les adresse IP client sont maintenant enregistrées sous l'en-tête du protocole de proxy.

7.    Activez la prise en charge du protocole proxy dans votre application cible.


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 07/12/2018