2020-03-11(水) [長年日記]
■ Cloudflareで(ようやく)https化(2) - tDiary.Net(1)
先日のtdtds.jpのCDN化がなんのトラブルもなくうまくいったので、次はtDiary.Net。現在、第一から第三あたりまではそれなりに動いてるっぽいんだけど*1、これらを勝手にCloudflareの下に置きます。たぶん誰も文句言わないだろう(←)。
前回同様、DNSは自動ではまともに読み込んでくれなかったので、今回はCloudflareが提供するAPIを使って全ホストのCNAMEを登録した。cURLを叩くシェルスクリプトをでっちあげただけなので詳細は省く。こんな感じ:
entry() { name=$1 host=$2 curl -X POST "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records" \ -H "Authorization: Bearer ${access_key}" \ -H "Content-Type:application/json" \ --data "{\"type\":\"CNAME\",\"name\":\"${name}\",\"content\":\"${host}.tdiary.net\",\"proxied\",true}" } entry hoge tdiary1 entry fuga tdiary1 entry piyo tdiary1 ...
簡単で良いですなぁ。アクセスキーに付与する権限にどれを使えばいいのかだけわかりにくかったけど。
で、日記の表示もうまくいってるようなので、試しにひとつ更新してみたら、こんな感じでGoogle Photosの画像が表示されなくなってしまった:
スクショだけではわからないが、404ではなく403、しかも更新直後は見えているのに、5分くらいすると見えなくなる。あまりにタイミングが一致しているので、どう考えても自分がなにかやらかしたに違いない。だが、あれこれ調べてみてもさっぱり見当がつかない。Cloudflareを通すタイミングでGoogleにアクセスがいって、そこでなにか起きているのだろうか……?
で、その後はてなブログでも同じ現象が起きてることを知り、やらかしたのはGoogleの方らしいと判明する。おれの時間を返せ!*2
ともあれ、これで完了かと思いきやそうではなく、道半ばである。実はいま、一部の日記はHeroku上で動作していて、その前に自作のtDiary専用リバースプロキシ&キャッシュサーバが置いてある。こんな感じ:
日記の更新などを契機に自作のプラグインがそのキャッシュサーバへpuegeの司令を送る感じでキャッシュコントロールをしてるんだけど、これを今後はCloudflareにまかせて*3、APIでpurgeをするようなプラグインに置き換えたい:
どっかで時間を確保しなくては……。