WordPressのCDN化:レベル3


WordPressのCDN化:レベル3

最新情報はWordCampで発表しました発表資料

レベル3でも、前回と同様にWordPressサイト全体をCDN化させます。違いは、記事の投稿および管理をオリジンサイトで行う点です。この方法のメリットは、セキュリティの向上です。

前提

今回の説明では、公開用FQDNおよびオリジンを以下のものとします:

  • 公開用
    • FQDN:www.example.jp
  •  オリジンサーバ
    • FQDN:www-orig.example.jp
    • IPアドレス:192.168.0.10

基本設定

  • WordPress設定
    • WordPress アドレス (URL): www-orig.example.jp
  • Apache設定
    • /var/www/html/wordpressディレクトリ
      • 以下のヘッダをunsetする(レベル2と同様)
        • Pragma
        • Cache-Control
        • Expires
      • 補足
        • wp-adminディレクトリのヘッダ設定は不要
    • OutputFilter等で、オリジンサイトのURLを公開サイトに変換する
      • www-orig.example.jp -> www.example.jp
      • ただし、wp-admin以下については変換しない
  •  CDN設定
    • オリジンホスト:192.168.0.10 or  www-orig.example.jp
      • どちらでも可
    • オリジンにアクセスする際のホストヘッダ: www-orig.example.jp
    • TTL設定:10秒程度

OutputFilter補足

Apacheで出力変換を行うにはOutputFilterを使用します:

<loocation “/”>
AddOutputFilter SUBSTITUTE .php .xml
SUBSTITUTE “s|http%3A%2F%2Fwww-orig.example.jp|http%3A%2F%2Fwww.example.jp|n”
SUBSTITUTE “s|http://www-orig.example.jp|http://www.example.jp|n”
SUBSTITUTE “s|http:\/\/www-orig.example.jp|http:\/\/www.example.jp|n”
</Location>
<Location “/blog/wp-admin/”>
RemoveOutputFilter SUBSTITUTE .php
</Location>

セキュリティ強化

  • オリジンサイトのFQDN
    • www-origではなくwww-乱数(例:www-5e5e45)等にします。これにより、オリジンサイトを狙った攻撃が少なくなります。
  • wp-adminのアクセス権限
    • CDNでwp-adminへのアクセスを拒否します(オリジンサイトへの直接アクセスのみ許します)。