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 |