Haproxy - как сделать реальное отображение IP на бекенде - PROXY protocol

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2026
Перейти к:навигация, поиск

Haproxy - как сделать реальное отображение IP на бекенде - PROXY protocol

Есть два метода:

1) PROXY protocol
2) Terminate SSL на HAProxy + forwardfor


Делаем первый вариант.

На HAPROXY меняем (добавляем send-proxy-v2):

backend site_com_tls_backend
   mode tcp
   server srv_XX_XX_XX_XX XX.XX.XX.XX:443  check
 на
 
 backend site_com_tls_backend
   mode tcp
   server srv_XX_XX_XX_XX XX.XX.XX.XX:443 send-proxy-v2 check


На бекенде - nginx (там где 443 порт):

   server_name www.site.com;
   listen XX.XX.XX.XX:443 ssl proxy_protocol;
   set_real_ip_from <IP_HAProxy>;
   real_ip_header proxy_protocol;
   real_ip_recursive on;
   
   и
   
   server_name site.com;
   listen XX.XX.XX.XX:443 ssl proxy_protocol;
   set_real_ip_from <IP_HAProxy>;
   real_ip_header proxy_protocol;
   real_ip_recursive on;


<IP_HAProxy> - заменить на свой.


Убедитесь, что в /etc/nginx/proxy_params не захардкожен proxy_set_header X-Real-IP $remote_addr — с proxy_protocol он будет работать корректно (подставлять реальный IP клиента).
Логи nginx ($remote_addr) автоматически покажут реальный IP, дополнительных настроек не требуется.

С бекенда - nginx:
# cat /etc/nginx/proxy_params
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;


Рестартим и проверяем логи:

Бекенд:
# nginx -t && systemctl reload nginx
Haproxy:
# systemctl reload haproxy
×
Реклама
ИКС