nginx + Cloudflare
Спрятал блог за
Сразу же обнаружилась проблема, запросы стали приходить не от реальных адресов клиентов, а от адресов проксирующих серверов Cloudflare.
При этом реальные адреса Cloudflare передаёт в X-Forwarded-For.
У меня на целевом хосте стоит связка nginx+php-fpm. nginx умеет показывать переданные ему реальные адреса через модуль http_realip.
Список своих публичных адресов Cloudflare отдаёт
Сделал скрипт который будет вызываться по cron с некоторой периодичностью. В server {} добавил «include cloudflare.inc;»(данную конструкцию можно добавить в контексты http/server/location).
#!/bin/sh cp /usr/local/etc/nginx/cloudflare.inc /usr/local/etc/nginx/cloudflare.inc.bak fetch -q -o - "https://www.cloudflare.com/ips-v4" | awk '{ print "set_real_ip_from " $1 ";" }' > /usr/local/etc/nginx/cloudflare.inc echo "real_ip_header X-Forwarded-For;" >> /usr/local/etc/nginx/cloudflare.inc /usr/local/etc/rc.d/nginx restart