X-Real-IP & Proxy Host Header

Lorsque ngnix est utilisé comme reverse proxy, les serveurs derrière ngnix doivent recevoir l'IP du client, pour que ces serveurs renseignent en retour ngnix sur l'IP à laquelle forwarder la réponse. (par défaut, les backend serveurs reçoivent l'ip d'ngnix)

En effet lors que 3 clients distincts requêtent ngnix, ngnix doit alors donner la réponse appropriée à chaque client.
pour que les backends serveurs revoivent la vraie ip du client:

server {
 listen 80;
 server_name exaple.com
 location {
  proxy_pass http:// 172.17.0.3;
  proxy_set_header X-Real-IP $remote_addr;
 }
}



Lorsqu'une requête est faite à ngnix utilisé en reverse proxy, la requête est passée conformément à la directive proxy_pass, mais ngnix enlève le header Host dans la requête transmise au serveur backend, le serveur de backend ne reçoit que le header Host de ngnix

Afin que le serveur de backend reçoive le header Host, on rajoute la directive Host::

server {
 listen 80;
 server_name exaple.com
 location {
  proxy_pass http:// 172.17.0.3;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $host;
 }
}



pour observer les paquets reçu par les serveur backend, installer tcpdump:

#se connecter au conteneur docker backend (docker exec -it idcontainer bash)
yum -y install tcpdump
tcpdump -A -vvv -s 999 -i eth0 port 80 > /tmp/headers
#faire une requête à ngnix
nano /tmp/headers