Nginx 환경에 CloudFlare 설정하기

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;

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다