nginx + Cloudflare

19 июля 2013 | Метки:

Спрятал блог за 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
Пока комментариев нет.