タグ「apache」が付けられているもの

amazon web services logo
CDNを使うのはキャッシュ目的であることがほとんどですが、スムースなアクセスを実現するにはキャッシュする時間を長くすべきです。もし無期限に設定したら1度オリジナルファイルを読めば後はCDNのサーバーまかせにできるので非常に効果的ですね。

しかし実際のサイトを運営していくのは必ずファイル更新作業があり、この同じファイルの更新の場面でCDNが入っていることで問題なります。キャッシュ時間を長くすることと更新を反映させることはCDN使う上では相反する行為だからですね。

世の中ではこうした問題を軽減するための手法がいくつか存在します。その一つがファイル名にバージョンを入れるRevving Filenamesという手法です。

要するに更新があったら「test.1.0.1.jpg」のようにファイル名にバージョン番号などを入れることで違うリソースとして認識させる手法のこと。これ完全に自動化されたデプロイ環境ならいいけど、手動でこれをするのは手間が多すぎしミスも発生しそう。

今回は、仮にHTML生成がアプリだとしてHTML中のパスを変えるのは簡単で、静的ファイルのファイル名を更新管理するのが難しいケースにしぼって、この問題を少しでも軽減すべくCloudFrontとEC2で試してみました。

ソーシャルプラグイン開発環境のための設定

  • 投稿日:
  • by
  • カテゴリ:

social-plugin.png

twitter、Facebook はもちろんのこと mixi や Gree へリンクを共有する仕組みを実現する機能を実装していたのですがちょいとはまりました。開発環境で動作確認を行っていると外部からのアクセス制限をかけている関係で各種ソーシャルサービスで正常に動作しません。

リンク共有のアクションを行うとソーシャルサイト側からコンテンツのチェックされ Open Graph Protocol のメタタグが読まれてリンク情報が表示されるという流れなので、Basic認証やIPアドレスなどのアクセス制限がされていると正常に動作しないわけですね。

対処方法ですが、すべてアクセス許可するのがOKなら問題ないわけですが、一般向けには公開したくないのであれば各ソーシャルサイトの共有機能からのアクセスだけ許可すれば良いです。

調べてみると各サービスでリンク共有すると以下のようなUserAgentでアクセスされることがわかりました。これでチェックすれば行けそうですね。

  • Twitterbot/0.1
  • Gree Social Feedback/1.0
  • facebookexternalhit/1.1
  • mixi-check/1.0

Basic認証設定時のELBヘルスチェックにはまる

  • 投稿日:
  • by
  • カテゴリ:

AWS のロードバランサー ELB を利用して複数のウェブサーバーをぶら下げる構成を準備している際に、公開前なのでBasic認証をそれぞれのウェブサーバーで設定してまうと外部から一切アクセスできなくなってします。この現象、自分ではまって解決したのにしばらくぶりに作業すると忘れていて、またはまる... そんな経験をしたのでメモしてく。

原因: ELBのヘルスチェック機能からも /healthcheck.txt へ正常にアクセスできなくなるため異常発生扱いになりウェブサーバーが切り離されるため

解決法: Apache 設定ファイルのどこかにこれを書いておく。(当然 /healthcheck.txt ファイルは事前においておくこと)

<Files healthcheck.txt>
    Satisfy Any
    Allow from all
</Files>

ところで最近はサービス説明ページが日本語されていて便利になりましたね。そのうち Management Console も日本語されちゃうのでしょうか。

少し探してもなかなかドンぴしゃな情報が出てこなかったので記録のためにまとめておきます。(最後の最後、結局自分の書いた記事にたどりついてヒントを得たりして)

運用中のサイトのメンテナンスなのに一時的にサイト全体のアクセスを禁止して、停止中のお知らせを出すようにしたい、かつメンテナンス中作業者によるアクセス確認のため特定IPからはアクセスを許可する設定は以下のようになります。

  RewriteEngine On
  RewriteCond %{REMOTE_ADDR} !^192\.168\.0
  RewriteRule ^.*$ /maintenance.html [L]

上の例だと、192.168.0.* からのアクセス以外は /maintenance.html の内容を表示するというものです。他のIPやネットワークアドレスを追加したければ RewriteCond を追加すればよいですね。

RewriteCond, RewriteRule はだいたいどのコンテキストでもかけるので、自分の場合は利用する VirtualHost 内に追記してます。

以上。こんなもんかな?

MT4 アップグレート+Redirect+Action Stream

  • 投稿日:
  • by
  • カテゴリ:

MT4が出たのは知っていたが別に必要がなかったのでほって置いたのに、なぜか昨夜火がついて 3.34 からのアップグレードを実施。

移行自体はあっけなく終了。テンプレート関係の問題もでず、そのまま再構築しても以前と全く同じデザインで再構築された。ついでに以前から気になってたデータベース charset が latin1 のままになっていた問題を解決して満足した。

あまりにもうまくいきすぎてつまらないので、テンプレート初期化を実行。あー、もうー。その後は結構面倒。標準テンプレートに戻ったわけなので、新規ブログを作るときのテンプレートデザインプロセスそのまま。

まず Widget Manager がオフになっているのでプラグイン設定画面でオン。次にWidget 関連のタグ変わってたので変更(WidgetManager -> WidgetSet)。widget関係の標準スタイル名が変更になっているので修正(module-XXX -> widget-XXX)。あとはウィジェットセットを新規に作成して、ウィジェットセットをサイドバーで読み込むよう include の記述をして完了。

仕事で運営しているサイトで携帯版ページを試験的に公開するにあたって、携帯からアクセスがあった場合に自動転送する処理をApacheでどうやるのか調べていた。結論から言えば User Agent で振り分けるだけなんだけど各携帯端末の User Agent の値がまとまっていなくてちょいと苦労した。

そういえば7月から自前の携帯はiPhone一本になったため携帯サイトの動作・表示確認がしづらくて困ったな。そんなときのための携帯ブラウザシミュレータ。docomoはシミュレーターを提供しているが手元の環境が Mac OS X なので VMware で Windows 起動して検証した。auは現在シミュレータ提供停止中。SoftBankは会員登録しないとダウンロードできないので面倒なのでダウンロードせず。

一旦iモードシミュレータで確認して、あとはTwitterで元気玉メソッド。あっという間に全国から(?)4キャリア14機種の検証結果が集められた。皆様その節はありがとうございました。

すぐに忘れてしまいそうなので設定をまとめておく。