CDP:Smart Custom Originパターン

提供:AWS-CloudDesignPattern
移動: 案内, 検索
寄贈したアーキテクト

オリジンサーバへの意図しないアクセスをさせない手法

目次

解決したい課題

Apacheでコンテンツデリバリ用のオリジンサーバを構成している場合、ディレクトリへのアクセス時に最後のスラッシュを省略してしまうとオリジンサーバへリダイレクトされてしまう。

これにより、「オリジンサーバへのアクセスが増える」「オリジンサーバのURLが分かってしまう」といった問題が発生する。

クラウドでの解決/パターンの説明

ApacheのRewriteモジュールを使用することで、

  • エッジサーバからのキャッシュリクエストで
  • ディレクトリへのアクセス時にスラッシュが省略された場合
  • 正しいキャッシュURLにリダイレクトを行う

ようなレスポンスを返す。

実装

AWSのコンテンツデリバリサービス「CloudFront」を使用している際のエッジサーバのアクセスは、"Amazon CloudFront"というUser-Agentが用いられる。

そこで、/etc/httpd/conf.d/rewrite.conf に

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^Amazon\ CloudFront$
RewriteRule ^/([^\.])+[^/]$ http://cached.example.com%{REQUEST_URI}/ [R=301]

という設定を行う。

これによりエッジサーバからのアクセス時にディレクトリパスへの / なしアクセスと思われるアクセスが行われた際に、オリジンサーバのURLを晒すことなく、キャッシュサーバのURLへリダイレクトが行われる。[関連ブログ 1]

構造

xThZwBJz1IIBEYkO.png

利点

  • 広告等の媒体にURLなどが掲載される場合に、/ を省略して記載するケースが少なくない。
  • URLを入力する際に / を打たないユーザも少なくない。

そういった場合に、オリジンサーバへの負荷をかけることがなくなる。

注意点

その他

関連ブログ

  1. log4moto の「CFでカスタムオリジンをApacheに向けている時のディレクトリ名スラッシュ補完時にオリジンのURLに転送されてしまう問題を解決してみた」( http://d.hatena.ne.jp/j3tm0t0/20120425/1335376459 )
個人用ツール
名前空間
変種
操作
CDPメニュー
ツールボックス