IP użytkownika w tandemie nginx proxy i nginx

Mamy zestaw dwóch serwerów:

  1. nginx – przekazujący ruch do wewnętrznych serwerów (proxy)
  2. nginx – hostujący serwis

Konfiguracja na dla domeny iworks.pl na pierwszym z nich wygląda następująco:

server {
server_name iworks.pl www.iworks.pl;
listen 80;
access_log /var/log/nginx/iworks.pl.access.log;
error_log /var/log/nginx/iworks.pl.error.log;
location / {
proxy_pass ;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Informacja o prawdziwym IP użytkownika jest przekazywana dalej w linijce: proxy_set_header X-Real-IP $remote_addr;

W celu wykorzystania go na drugim serwerze, tym który hostuje stronę, należy w pliku /etc/nginx/fastcgi_params

Zmienić linijkę
fastcgi_param REMOTE_ADDR $remote_addr;
na
fastcgi_param REMOTE_ADDR $http_x_real_ip;
dzięki czemu na serwerze hostującym adres użytkownika oglądającego stronę będzie „prawdziwy”, zamiast być adresem serwera proxującego.