CDNを使っているにもかかわらず、オリジンサイトへ誘導される(ユーザのリクエストがオリジンサーバに向かう)ことがあります。これは、以下の二つの理由により発生します:
- HTTPヘッダにオリジンサーバのFQDNが含まれる
- Location
- Refresh
- ページにオリジンサーバのFQDNが含まれる
- CMSによる自動生成
- Metaタグ
HTTPヘッダ
以下のようなHTTPヘッダにFQDNが含まれます。ただし、最近のCDNは、このようなHTTPヘッダを自動的に書き換える(Nginx Proxy_redirect設定に相当する動作を行う )ため、問題となることは少なくなっています。
一方、CDNが自動書き換えを行わない場合、オリジンサーバで書き換える必要があります。Apacheであれば、mod_headersを使用し、以下のような設定を行います:
- Header edit Location www-orig\.example\.jp www.example.jp
Locationヘッダ
これはHTTPリダイレクトを行ったときに、リダイレクト先のURLをブラウザに通知するために使用されます。
- サンプルレスポンス
- content-length:202
content-type:text/html; charset=iso-8859-1
date:Fri, 01 Apr 2016 05:25:52 GMT
location:https://tech.jstream.jp/blog/
status:301
- content-length:202
そして、デフォルト設定の(明示的なリダイレクト設定をしていない)Webサーバでも、以下のような場合においてリダイレクトが発生します。
- Trailing Slash (トレイリング・スラッシュ)が無いURL
- 例えば、https://www.example.jp/fooへアクセスすると、多くの場合、https://www-orig.example.jp/foo/へリダイレクトされます。
Refreshヘッダ
これは、ブラウザに指定したURLにジャンプさせるために使用されます。
サンプルレスポンス
- content-length:202
content-type:text/html; charset=iso-8859-1
date:Fri, 01 Apr 2016 05:25:52 GMT
Referesh: 10; url=https://www-orig.example.jp/
status:200
これについては、明示的な設定により生成されます(デフォルトでは発生しません)。
ページに含まれるオリジンサーバのFQDN
オリジンサイトによっては、ページ内部にオリジンサーバのFQDNを含むことがあります。一方、CDNは、ページ内部の変更を行いません。そのため、オリジンWebサーバ上で書き換えを行う必要があります。Apacheであれば、SUBSTITUTEなどを使い、以下のような設定で可能です:
- AddOutputFilter SUBSTITUTE .php .xml
SUBSTITUTE “s|https%3A%2F%2Fwww-orig.examle.jp|https%3A%2F%2Fwww.example.jp|n”
SUBSTITUTE “s|https://www-orig.example.jp|https://www.exampe.jp|n”
CMSが生成するリンク
WordPressのようなCMSでは、記事へのリンクをホスト名を含んだフルリンクで生成します。例えば、Wordpressの基本設定で以下のように指定した場合
- WordPressアドレス(URL):https://www-orig.example.jp
WordPressは、すべてのページへのリンクを、このFQDN(www-orig.examplejp)を含む形で、生成します。そのため、ページを移動しようとした時に、オリジンサイトに飛ばされてしまいます。
Metaタグ
以下のようなMetaタグはFQDNを含みます。
- Refresh
- HTTP Rereshヘッダのmetaによる実装
- 例
- <meta http-equiv=”refresh” content=”10;url=https://www-orig.example.jp/”>