よくあるアフィ記事のタイトル風
Cloudflare 無料で色んなことできるのに周りで使っている人が少ないから布教してみる。

Cloudflare の日本でのシェア

https://tech.jstream.jp/blog/wp-content/uploads/2019/10/CDN-share-japanese-Oct2019.png

引用元:
tech.jstream.jp

以外に日本でのシェアがあった。
でも Cloudflare を使ってるって声をあまり聞いたことがないので企業で使っているところがあったら教えてください。

Cloudflare の企業ミッション

Cloudflare is on a mission to help build a better Internet.
かっこいい

この企業ミッションを見てから、記事の続きを見てみてください。

無料で使える

大体の必要なことは無料で使える。

(無料)証明書の用意なんてしなくても HTTPS が使える

f:id:rarirureluis:20200119185019p:plain
Cloudflare はクライアントとオリジンサーバーの間に入るリバースプロキシでもある。
例えばデフォルトの Flexible では
ユーザー →(HTTPS) Cloudflare → (HTTP) オリジンサーバー
の振る舞いを行い、何もしなくても HTTPS 接続ができる。

Cloudflare – オリジン間 も HTTPS にすることは可能で
Full or Full(strict) を選べば良い。

Full はオレオレ証明書でも可能だけど、Full(strict) はオリジンサーバー上に信頼された CA が必要になる。

(無料)オリジンサーバーの Public IP が隠せる

リバースプロキシとして作用するので、隠せる。

(無料)Page Rule によって痒いとこに手が届く

f:id:rarirureluis:20200119184601p:plain
例えば、f.easyuploader.app/*/upload/* のリクエストパスに対しておもむろにキャッシュを効かせられる。
無料ユーザーなら3つまで Page Rule が作成可能で、アカウント単位ではなくドメイン単位なので優しい。

(無料) Access 機能はまじですごい

特定のサブドメイン、または特定のパスに対してアクセス制限をかけたい場合、Cloudflare Access なら無料でできる。

f:id:rarirureluis:20200119200925p:plain
まずはプロバイダーを選択する。
ここでは Google を選択。

f:id:rarirureluis:20200119201142p:plain
次に、管理しやすいようにグループを作成する。
メール認証でも、完全一致ではなく特定のドメインの人でもできるのでご安心を。

f:id:rarirureluis:20200119200618p:plain
これは ドメイン/wordprpess/wp-admin/ に対して、Google 認証でアクセス制限をかけてる。

f:id:rarirureluis:20200119200821p:plain
実際にアクセスをすると、Google のログイン画面が出てくる。

先程のグループ email の中で設定した Google アカウントの人のみアクセスできるようになる。
仕組みとしてはログインするとポリシーを作成したときの Session Duration が有効期限の JWT が送られてくる。

f:id:rarirureluis:20200119201848p:plain

管理ツールとかも、この Access に入れればログイン機能実装しなくても使えちゃう。
中身 JWT だし。すごいよ Cloudflare Access。しかも無料で多分これは無制限に作れる。

これに加えて例えばバッチでこの Access 配下のリソースに触りたい時、特定の IP からは bypass するという機能も無料で使える。

rarirure.rip

(無料)Rate Limit によるブルートフォースの対策もできちゃう

f:id:rarirureluis:20200119202250p:plain
この例では *.easyuploader.app に対して 1パブリックIP から1分間に50回のリクエストがあった場合に
1時間その IP をブロックするできる。

無料では1つしか作成できないけど、これもドメイン単位。すごい。

(有料)Global Load Balancer もある

月額 $5 で Global Load Balancer が使える。
一時期使ってたけど今は使ってないので画像つきで紹介はできないんですが、普通に LB です。

ファイアウォールイベントで不正なアクセスを確認できる

f:id:rarirureluis:20200119205114p:plain

アナリティクス画面も楽しい

f:id:rarirureluis:20200119205302p:plain
リクエスト数
f:id:rarirureluis:20200119205323p:plain
トラフィック
f:id:rarirureluis:20200119205343p:plain
ユニークユーザー数

Cloudflare のお陰で 3TB もキャッシュも返してくれていて、オリジンへは 100GB しか来てないのすごい。

キャッシュのパージは3秒で消える

uploader.xzy.pw
個人サービスでいくつか削除依頼でファイルを削除したりするけど、Cloudflare 上でキャッシュをパージすると3秒ぐらいでアクセスできなくなる。パージも速い。

SDK からもできるよ

func deleteCacheFromCF(fileName string) error {
pcr := cloudflare.PurgeCacheRequest{
Files: []string{
fmt.Sprintf("https://f.easyuploader.app/%s/upload/%s", config.MinioBucket, fileName),
},
}
_, err := cf.API.PurgeCache(cf.ID, pcr)
return err
}

AWS のリソースとも組み合わせられる

一時期 S3 を使っていたときに、Cloudflare と組み合わせて使っていた。

s3+ CloudFront が定番だけど、s3 + Cloudflare も良い。無料だよ!

Lambda@Edge 的な Cloudflare Workers

www.cloudflare.com

Workers が Cloudflare のエッジで実行されるコンピューティングで
Workers KV が Cloudflare のネットワーク内にある KVS。

rarirure.rip
でも正直使いみちは分からない。遅いし、、、。

無料で使ってるときの注意点

今まで Cloudflare を使ってきて2つ困ったことがあった。

サブサブドメイン

サブサブドメインで、これらの Cloudflare の恩恵を受けるには証明書を買わないといけない。
月 $5

client maximum upload size

最大で 100MB
Pro でも 100MB
Business で 200MB
Enterprise で 500+ MB

クライアントから 100MB 以上のファイルを送ってもらうには色々注意が必要。
一昔までクライアントからチャンクしてバックエンドで細かく保存して最後に1つにして、アップロードするっていう仕組みを作ったけどそれはやめて、Cloudflare を通さずに直接 minio に送るようにした。(署名付きURL)

Pro プランでも月額 $20

www.cloudflare.com

Enterprise も安いよ

詳しくは問い合わせてみてください。安いです。

Cloudflare はよく落ちるからなぁ、、、

www.itmedia.co.jp

去年は2回大きな障害があった記憶がある。
1個は Version のミス、もう1個は Cloudflare のミス。

Cloudflareは、HTTP/HTTPSインターネットトラフィック全体の10%をルーティングしており

スマートルーティングと階層型キャッシングを通じたパフォーマンス | Cloudflare

そりゃ Cloudflare が落ちたら Cloudflare は不安定という印象が付く。
でも、他の CDN だって落ちてる。

downdetector.com

社内で某 CDN のことで良くない噂も聞いたりする。
Cloudflare は不安定だから っていう理由で Cloudflare を選択肢から外すのは悲しい;;

僕も別に Cloudflare について熟知しているわけじゃないけど、CDN を選択する際にぜひ候補として考えてほしいです。
ここでは Cloudflare 全体の 3.5割ぐらいのことしか説明できませんでしたが無料なので1度触ってみてください。