よくあるアフィ記事のタイトル風
Cloudflare 無料で色んなことできるのに周りで使っている人が少ないから布教してみる。
- Cloudflare
- Cloudflare の日本でのシェア
- Cloudflare の企業ミッション
- 無料で使ってるときの注意点
- Pro プランでも月額 $20
- Cloudflare はよく落ちるからなぁ、、、
TOC
Cloudflare
コンテンツデリバリーネットワークやインターネットセキュリティサービス、分散型ドメイン名サーバシステムを提供するアメリカ合衆国の企業で、閲覧者とホスティングプロバイダー間でリバースプロキシとして動作する。
Cloudflare の日本でのシェア
引用元:
tech.jstream.jp
以外に日本でのシェアがあった。
でも Cloudflare を使ってるって声をあまり聞いたことがないので企業で使っているところがあったら教えてください。
Cloudflare の企業ミッション
Cloudflare is on a mission to help build a better Internet.
かっこいい
この企業ミッションを見てから、記事の続きを見てみてください。
無料で使える
大体の必要なことは無料で使える。
(無料)証明書の用意なんてしなくても HTTPS が使える
Cloudflare はクライアントとオリジンサーバーの間に入るリバースプロキシでもある。
例えばデフォルトの Flexible では
ユーザー →(HTTPS) Cloudflare → (HTTP) オリジンサーバー
の振る舞いを行い、何もしなくても HTTPS 接続ができる。
Cloudflare – オリジン間 も HTTPS にすることは可能で
Full or Full(strict) を選べば良い。
Full はオレオレ証明書でも可能だけど、Full(strict) はオリジンサーバー上に信頼された CA が必要になる。
(無料)オリジンサーバーの Public IP が隠せる
リバースプロキシとして作用するので、隠せる。
(無料)Page Rule によって痒いとこに手が届く
例えば、f.easyuploader.app/*/upload/* のリクエストパスに対しておもむろにキャッシュを効かせられる。
無料ユーザーなら3つまで Page Rule が作成可能で、アカウント単位ではなくドメイン単位なので優しい。
(無料) Access 機能はまじですごい
特定のサブドメイン、または特定のパスに対してアクセス制限をかけたい場合、Cloudflare Access なら無料でできる。
まずはプロバイダーを選択する。
ここでは Google を選択。
次に、管理しやすいようにグループを作成する。
メール認証でも、完全一致ではなく特定のドメインの人でもできるのでご安心を。
これは ドメイン/wordprpess/wp-admin/ に対して、Google 認証でアクセス制限をかけてる。
実際にアクセスをすると、Google のログイン画面が出てくる。
先程のグループ email の中で設定した Google アカウントの人のみアクセスできるようになる。
仕組みとしてはログインするとポリシーを作成したときの Session Duration が有効期限の JWT が送られてくる。
管理ツールとかも、この Access に入れればログイン機能実装しなくても使えちゃう。
中身 JWT だし。すごいよ Cloudflare Access。しかも無料で多分これは無制限に作れる。
これに加えて例えばバッチでこの Access 配下のリソースに触りたい時、特定の IP からは bypass するという機能も無料で使える。
(無料)Rate Limit によるブルートフォースの対策もできちゃう
この例では *.easyuploader.app に対して 1パブリックIP から1分間に50回のリクエストがあった場合に
1時間その IP をブロックするできる。
無料では1つしか作成できないけど、これもドメイン単位。すごい。
(有料)Global Load Balancer もある
月額 $5 で Global Load Balancer が使える。
一時期使ってたけど今は使ってないので画像つきで紹介はできないんですが、普通に LB です。
ファイアウォールイベントで不正なアクセスを確認できる
アナリティクス画面も楽しい
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
Workers が Cloudflare のエッジで実行されるコンピューティングで
Workers KV が Cloudflare のネットワーク内にある KVS。
rarirure.rip
でも正直使いみちは分からない。遅いし、、、。
無料で使ってるときの注意点
今まで Cloudflare を使ってきて2つ困ったことがあった。
client maximum upload size
最大で 100MB
Pro でも 100MB
Business で 200MB
Enterprise で 500+ MB
クライアントから 100MB 以上のファイルを送ってもらうには色々注意が必要。
一昔までクライアントからチャンクしてバックエンドで細かく保存して最後に1つにして、アップロードするっていう仕組みを作ったけどそれはやめて、Cloudflare を通さずに直接 minio に送るようにした。(署名付きURL)
Cloudflare はよく落ちるからなぁ、、、
去年は2回大きな障害があった記憶がある。
1個は Version のミス、もう1個は Cloudflare のミス。
スマートルーティングと階層型キャッシングを通じたパフォーマンス | Cloudflare
そりゃ Cloudflare が落ちたら Cloudflare は不安定という印象が付く。
でも、他の CDN だって落ちてる。
社内で某 CDN のことで良くない噂も聞いたりする。
Cloudflare は不安定だから っていう理由で Cloudflare を選択肢から外すのは悲しい;;
僕も別に Cloudflare について熟知しているわけじゃないけど、CDN を選択する際にぜひ候補として考えてほしいです。
ここでは Cloudflare 全体の 3.5割ぐらいのことしか説明できませんでしたが無料なので1度触ってみてください。