Jak uzyskać adres IP klienta z AWS, Google Cloud LB i Cloudflare w Nginx?

Konfigurowanie aplikacji internetowej w chmurze jest zawsze zabawne i ekscytujące.

Niedawno uruchomiłem narzędzie newsblog.pl Tools, które jest hostowane w AWS za Cloudflare.

Używam modułu równoważenia obciążenia aplikacji AWS i Nginx jako serwera WWW. Po zrobieniu życia poszedłem zobaczyć access.log i zauważyłem, że wszystkie żądania były oznaczone jako pochodzące z wewnętrznego adresu IP (load balancera).

To nie jest dobre, jeśli chcesz analizować dzienniki serwera WWW pod kątem lokalizacji odwiedzających. Zdałem sobie sprawę, że brakuje mi lub muszę wprowadzić pewne zmiany w konfiguracji, aby przywrócić adres IP klienta.

Czy jesteś w takiej samej sytuacji jak ja?

Cóż, oto jak możesz uzyskać adres IP klienta w dziennikach dostępu Nginx.

Uzyskiwanie adresu IP gościa z AWS lub Google Cloud LB

  • Zaloguj się do swojego serwera WWW Nginx
  • Przejdź do ścieżki, w której jest zainstalowany (domyślna lokalizacja /etc/nginx)
  • Zrób kopię zapasową pliku nginx.conf
  • Dodaj następujące elementy w bloku HTTP
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
  • Uruchom ponownie Nginx i powinieneś zobaczyć adres IP odwiedzającego w pliku access.log

Jeśli jesteś za Cloudflare, zobaczysz ich adres IP zamiast adresu IP klienta, więc musisz również wykonać poniższe czynności.

Pobieranie adresu IP klienta z Cloudflare

Cloudflare jest świetnym dostawcą CDN i zabezpieczeń i bardzo go uwielbiam. Jeśli używasz Cloudflare tak jak ja i chciałbyś przywrócić adres IP odwiedzającego w dzienniku serwera WWW, oto jak możesz to zrobić.

Zakładając, że jesteś zalogowany na serwerze Nginx

Zrób kopię zapasową pliku konfiguracyjnego swojej witryny (zwykle tutaj – /etc/nginx/sites-available/yourdomain)

Dodaj następujący tekst na początku pliku

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;

Uwaga: możesz sprawdzić poprawność listy adresów IP z ich oficjalna strona.

Uruchom ponownie Nginx i powinieneś teraz zobaczyć adres IP klienta. Mi to pomogło i mam nadzieję, że Tobie też.

Następnie dowiedz się, jak zaimplementować bezpieczne nagłówki za pomocą Cloudflare Workers.

Podobał Ci się artykuł? A co powiesz na dzielenie się ze światem?