cloudflare haproxy real-ip
Привет, днес пуснах отново блога да върви през cloudflare. Бях го спрял защото 1 година използвах SSL сертификат от GoDaddy заради SPDY но серфитиката изтече, а и цената му вече беше доста по-висока от когато го бях закупил. И така реших отново да пусна трафика да минава през cloudflare защото в крайна сметка използвам само 80 порт.
Тъй като от поста ми за SPDY писан през септември 2012-та година много вода е изтекла, и промените по инфраструктурата на сървърите ми са доста – а именно вече използвам HAProxy за load balancer + още много много благинки. Тук идва и проблема на който знаех че ще се натъкна след като включа cloudflare – а именно грешните айпи адреси в логовете. Проблема е че в конфигурационния файл на HAProxy съм добавил опцията :
option forwardfor
Тя позволява реалните айпи адреси на посетителите на сайта да бъдат препращани към уеб сървъра (nginx) в който съответно също са добавени опциите:
set_real_ip_from 192.168.1.1; # това е вътрешното айпи на HAProxy сървъра real_ip_header X-Forwarded-For;
Но след като съм включил cloudflare, е небходимо да заменя „real_ip_header X-Forwarded-For;“ със „real_ip_header CF-Connecting-IP;“ и да добавя айпи адресите на CloudFlare от https://www.cloudflare.com/ips-v4
Всичко хубаво, но не се получи желаният от мен резултат. 🙂
В крайна сметка реших проблема , след като добавих опцията :
option httpclose
в haproxy.cfg за даденият backend.
Така конфигурационният файл за backend-a на блога вече изглежда така:
backend friendbg.net cookie SERVERID insert indirect balance roundrobin option httpclose server web1 192.168.1.31:80 cookie web1 check inter 2000 rise 2 fall 5 server web2 192.168.1.32:80 cookie web2 check inter 2000 rise 2 fall 5 server web3 192.168.1.33:80 cookie web3 check inter 2000 rise 2 fall 5
И nginx конфига на friendbg.net изглежда така:
#cloudflare set_real_ip_from 199.27.128.0/21; set_real_ip_from 173.245.48.0/20; 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 141.101.64.0/18; set_real_ip_from 108.162.192.0/18; set_real_ip_from 190.93.240.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 162.158.0.0/15; set_real_ip_from 104.16.0.0/12; set_real_ip_from 192.168.1.1; real_ip_header CF-Connecting-IP;
Така вече всичко работи както исках, вече виждам реалните айпи адреси на посетителите на блога + трафика на сайта минава през cloudflare. Това е..