- CloudFlare Tunnelsによってインターネットアクセス可能。
- NginxによってWebページを公開している。
以上の状態だと、/var/log/nginx/access.log
に記録されるログは、全てのリクエストが127.0.0.1
から来ているものとして記録される。オリジナルのIPアドレスを復元したい場合、以下の手順を実行する必要がある。
-
nginx-cloudflare-real-ipのセットアップ
nginx-cloudflare-real-ipはNginx用のconfigを生成してくれるスクリプトのようだ。中身を見てみたが、CloudFlareのIPアドレス一覧ページをパースしてNginxコンフィグファイルを生成する、至ってシンプルなシェルスクリプトだし、500スター程度付いているので使っても大丈夫だろう。
$ git clone https://github.com/ergin/nginx-cloudflare-real-ip.git $ cd nginx-cloudflare-real-ip $ sudo mkdir /opt/scripts $ sudo cp cloudflare-sync-ips.sh /opt/scripts/ $ sudo chmod +x /opt/scripts/cloudflare-sync-ips.sh
実行してみる。
$ sudo /opt/scripts/cloudflare-sync-ips.sh
/etc/nginx/cloudflare
が追加されているはず。 -
/etc/nginx/nginx.conf
の編集README.mdに従い、
/etc/nginx/nginx.conf
内のhttp{....}
ブロック内に以下を追記する。include /etc/nginx/cloudflare; set_real_ip_from 127.0.0.1/32;
-
cronによるIPアドレスレンジの自動更新をセットアップ
$ sudo crontab -e
以下を追記。
# Auto sync ip addresses of Cloudflare and reload nginx 30 2 * * * /opt/scripts/cloudflare-ip-whitelist-sync.sh >/dev/null 2>&1
これでもしCloudFlareのIPアドレスのレンジが変わったとしても、自動的に追従してくれるはず。
-
Nginxの再起動
$ sudo systemctl restart nginx
-
/var/log/nginx/access.log
を見て、訪問者の実際のIPアドレスになっているか確認