3 votes

Obtenir l'IP du client en passant par un reverse proxy

Dans mon VPS, j'héberge plusieurs sites web, chacun vivant dans son propre conteneur Linux. Par exemple

Site n° 1 -> 10.0.3.111

Site n°2 -> 10.0.3.112

Site n°3 -> 10.0.3.113

Pour savoir où rediriger chaque demande, j'ai également un proxy inverse nginx dans un autre conteneur Linux en 10.0.3.101

Le problème que je rencontre est que dans l'un de mes sites Web, qui utilise Laravel, j'essaie d'obtenir l'IP du client, comme ceci :

<p>IP Address: {{ Request::getClientIp() }}</p>

Le problème est que je reçois tout le temps 10.0.3.101 au lieu de l'adresse IP du client.

Je suppose que Laravel récupère l'adresse IP du dernier hôte d'où provient la demande, et non celle de l'hôte initial qui a lancé la demande.

Y a-t-il un moyen d'obtenir cette IP sans modifier cette structure ?

Configurations

C'est mon fichier d'hôte nginx :

server {
        listen 80;
        server_name example.com www.example.com;

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://10.0.3.115;
        }
}

2voto

Alexey Ten Points 7572

Vous devez définir mandataire de confiance . Dans ce cas getClientIp() utilisera X-Forwarder-For pour obtenir l'adresse IP du client.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X