11977d437507d035090891d94a39b9be2eae4201
cloudflare/CloudFlare Tunnels/Nginx\343\201\247\350\250\252\345\225\217\350\200\205\343\201\256IP\343\202\242\343\203\211\343\203\254\343\202\271\343\202\222\350\250\230\351\214\262\343\201\231\343\202\213.md
| ... | ... | @@ -0,0 +1,54 @@ |
| 1 | +- CloudFlare Tunnelsによってインターネットアクセス可能。 |
|
| 2 | +- NginxによってWebページを公開している。 |
|
| 3 | + |
|
| 4 | +以上の状態だと、`/var/log/nginx/access.log`に記録されるログは、全てのリクエストが`127.0.0.1`から来ているものとして記録される。オリジナルのIPアドレスを復元したい場合、以下の手順を実行する必要がある。 |
|
| 5 | + |
|
| 6 | +1. `nginx-cloudflare-real-ip`のセットアップ |
|
| 7 | + |
|
| 8 | + `nginx-cloudflare-real-ip`はNginx用のconfigを生成してくれるスクリプトのようだ。中身を見てみたが、CloudFlareのIPアドレス一覧ページをパースしてNginxコンフィグファイルを生成する、至ってシンプルなシェルスクリプトだし、500スター程度付いているので使っても大丈夫だろう。 |
|
| 9 | + |
|
| 10 | + ``` |
|
| 11 | + $ git clone https://github.com/ergin/nginx-cloudflare-real-ip.git |
|
| 12 | + $ cd nginx-cloudflare-real-ip |
|
| 13 | + $ sudo mkdir /opt/scripts |
|
| 14 | + $ sudo cp sudo cp cloudflare-sync-ips.sh /opt/scripts/ |
|
| 15 | + $ sudo chmod +x /opt/scripts/cloudflare-sync-ips.sh |
|
| 16 | + ``` |
|
| 17 | + |
|
| 18 | + 実行してみる。 |
|
| 19 | + ``` |
|
| 20 | + $ sudo /opt/scripts/cloudflare-sync-ips.sh |
|
| 21 | + ``` |
|
| 22 | + |
|
| 23 | + `/etc/nginx/cloudflare`が追加されているはず。 |
|
| 24 | + |
|
| 25 | + |
|
| 26 | +1. `/etc/nginx/nginx.conf`の編集 |
|
| 27 | + |
|
| 28 | + [README.md](https://github.com/ergin/nginx-cloudflare-real-ip/blob/master/README.md)に従い、`/etc/nginx/nginx.conf`内の`http{....}`ブロック内に以下を追記する。 |
|
| 29 | + ``` |
|
| 30 | + include /etc/nginx/cloudflare; |
|
| 31 | + set_real_ip_from 127.0.0.1/32; |
|
| 32 | + ``` |
|
| 33 | + |
|
| 34 | +1. cronによるIPアドレスレンジの自動更新をセットアップ |
|
| 35 | + |
|
| 36 | + ``` |
|
| 37 | + $ sudo crontab -e |
|
| 38 | + ``` |
|
| 39 | + |
|
| 40 | + 以下を追記。 |
|
| 41 | + ``` |
|
| 42 | + # Auto sync ip addresses of Cloudflare and reload nginx |
|
| 43 | + 30 2 * * * /opt/scripts/cloudflare-ip-whitelist-sync.sh >/dev/null 2>&1 |
|
| 44 | + ``` |
|
| 45 | + これでもしCloudFlareのIPアドレスのレンジが変わったとしても、自動的に追従してくれるはず。 |
|
| 46 | + |
|
| 47 | + |
|
| 48 | +1. Nginxの再起動 |
|
| 49 | + |
|
| 50 | + ``` |
|
| 51 | + $ sudo systemctl restart nginx |
|
| 52 | + ``` |
|
| 53 | + |
|
| 54 | +1. `/var/log/nginx/access.log`を見て、訪問者の実際のIPアドレスになっているか確認 |
|
| ... | ... | \ No newline at end of file |