Nginx 환경에 CloudFlare 설정하기
CloudFlare 서버 IP로만 접속이 가능하게 하고, CloudFlare 서버 IP가 아닌 접속자의 실제 IP가 찍히도록, Nginx 설정을 변경한다.
그리고 지속적으로 CloudFlare 서버 IP를 가져와 Nginx 설정을 다시 하도록 자동화한 방식이다.
sudo vim /etc/nginx/nginx.conf
mkdir /opt/cloudflare
sudo vim /opt/cloudflare/ip-whitelist-sync.sh
sudo chmod 777 /opt/cloudflare/ip-whitelist-sync.sh
/opt/cloudflare/ip-whitelist-sync.sh
crontab -e
crontab -l
sudo service cron start
sudo service nginx reload
##
# Virtual Host Configs
##
include /etc/nginx/cloudflare; # 이 부분 추가
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
#!/bin/bash
CLOUDFLARE_FILE_PATH=/etc/nginx/cloudflare
echo "#Cloudflare" > $CLOUDFLARE_FILE_PATH;
echo "" >> $CLOUDFLARE_FILE_PATH;
echo "# - IPv4" >> $CLOUDFLARE_FILE_PATH;
for i in `curl -s -L https://www.cloudflare.com/ips-v4`; do
echo "set_real_ip_from $i;" >> $CLOUDFLARE_FILE_PATH;
done
echo "" >> $CLOUDFLARE_FILE_PATH;
echo "# - IPv6" >> $CLOUDFLARE_FILE_PATH;
for i in `curl -s -L https://www.cloudflare.com/ips-v6`; do
echo "set_real_ip_from $i;" >> $CLOUDFLARE_FILE_PATH;
done
echo "" >> $CLOUDFLARE_FILE_PATH;
echo "real_ip_header CF-Connecting-IP;" >> $CLOUDFLARE_FILE_PATH;
#test configuration and reload nginx
nginx -t && systemctl reload nginx
30 2 * * * /opt/cloudflare/ip-whitelist-sync.sh >/dev/null 2>&1
굳이 CloudFlare IP만 허용되도록 제한하고 싶지 않다면 아래처럼 하면 됨
set_real_ip_from 0.0.0.0/0;
real_ip_header CF-Connecting-IP;