Розгортання веб-застосунку у хмарному середовищі – це завжди захоплююче завдання, яке вимагає уваги до деталей.
Нещодавно я запустив свій інструмент techukraine.net Tools, який працює на платформі AWS за підтримки Cloudflare.
Для балансування навантаження я використовую AWS Application Load Balancer, а веб-сервером виступає Nginx. Після запуску, переглянувши access.log, я зауважив, що всі запити реєструються як такі, що надходять з внутрішніх IP-адрес (балансувальника навантаження).
Це створює проблему, якщо необхідно аналізувати журнали веб-сервера, враховуючи географічне розташування відвідувачів. Стало зрозуміло, що для коректного відстеження IP-адрес клієнтів потрібні зміни у конфігурації.
Ви зіткнулися з подібною ситуацією?
Далі я розповім, як налаштувати Nginx для отримання справжніх IP-адрес клієнтів у журналах доступу.
Отримання IP-адреси відвідувача через AWS або Google Cloud LB
- Підключіться до вашого веб-сервера з Nginx.
- Перейдіть у директорію встановлення Nginx (за замовчуванням: /etc/nginx).
- Створіть резервну копію файлу nginx.conf.
- Додайте наступні рядки всередину блоку http:
real_ip_header X-Forwarded-For; set_real_ip_from 0.0.0.0/0;
- Перезапустіть Nginx. Після цього ви побачите IP-адреси відвідувачів у access.log.
Якщо ваш вебсайт використовує Cloudflare, ви побачите їхні IP-адреси замість клієнтських. У такому випадку потрібно виконати додаткові налаштування, описані далі.
Отримання IP-адрес відвідувачів через Cloudflare
Cloudflare – це потужний CDN та сервіс безпеки, яким я активно користуюся. Якщо ви також використовуєте Cloudflare і хочете бачити справжні IP-адреси клієнтів у журналі веб-сервера, ось як це можна налаштувати.
Припустимо, що ви вже підключилися до вашого Nginx сервера.
Створіть резервну копію конфігураційного файлу вашого сайту (зазвичай це /etc/nginx/sites-available/yourdomain).
Додайте на початку файлу наступні рядки:
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;
Зверніть увагу: актуальний перелік IP-адрес Cloudflare можна знайти на їх офіційній сторінці.
Після перезапуску Nginx ви побачите реальні IP-адреси відвідувачів. Ця конфігурація допомогла мені, сподіваюся, вона буде корисною і вам.
Наступним кроком буде розгляд впровадження безпечних заголовків за допомогою Cloudflare Workers.
Чи сподобалася вам ця стаття? Поділіться нею з іншими!