CloudfalreなどのCDNを利用している場合にCDNを迂回してOriginサーバーにリクエストを送る方法

はじめに

CDNサービスを利用している場合、通常は名前解決後のIPアドレスCDNサービスのものとなってしまうため、OriginサーバーへのリクエストはCDNサービスを経由したものとなります。
動作確認などのためにOriginサーバーに直接リクエストを送りたい場合は、リクエストを送る際にオプションを設定することで、CDNを迂回してOriginサーバーにリクエストを送ることができます。

前提条件

やり方

OriginサーバーのグローバルIPアドレス203.0.113.154 、URLが https://example.com の場合、以下のコマンドを実行します。

$ curl https://example.com --resolve example.com:443:203.0.113.154

nginxのvirtual hostを使っている場合は、以下のようにHostヘッダーを付与する必要があります。

$ curl https://example.com -H 'host: example.com' --resolve example.com:443:203.0.113.154

今回は、curl--resolve オプション*1を利用して、リクエストの向き先をCDNからOriginサーバーに変更しました。
hostsファイルを変更して向き先を変える方法もありますが、毎回ファイルを書き換えるのが手間だったり変更したまま元に戻し忘れるリスクがあるため、curlコマンドのオプションで向き先を変えるのが手軽で良いかなと思います。
CDNを迂回してOriginサーバーにリクエストを送れると何が嬉しいのかというと、OriginサーバーがHTTPSでリクエストを受け付けている場合に、証明書が適切に設定されているかを確認したり、CDNを経由しないリクエストをブロックする設定などが適切に機能しているかを確認する際などに便利です。

まとめ

curlコマンドの --resolve オプションを使って、リクエストの向き先をCDNからOriginサーバーに変更する方法を紹介しました。