nginx」タグアーカイブ

Nginx で SPDY !

SPDY (スピーディー) は、Googleが提唱し、現在標準化作業が進められている通信プロトコルです。
HTTP の次期バージョン HTTP 2.0 のベースとなる技術の有力候補として SPDY が挙げられてたりもするので要注目ですね。
ブラウザが対応していないと恩恵に預かれませんが、Chrome や Firefox, Opera の最新版であれば問題なく利用できます。IE ? なにそれ?おいしいの?

Wikipedia から、抜粋して引用すると

SPDYは、Googleが提唱し、現在標準化作業が進められている通信プロトコルの一つ。2012年8月現在の最新バージョンはSPDY Protocol – Draft 3(一般には「SPDYv3」と称されることが多い)。

基本的には既存のHTTPを拡張しダウンロードの高速化を目指したプロトコルで、TLS接続の上にセッション層を追加し、単一のSPDYセッションで複数のリクエストを送受信することを可能にしている。それ以外にも以下のような機能がある。

サーバヒント
クライアント側がコンテンツをダウンロードする際に、サーバ側からコンテンツの展開に必要と思われる付属データを提案するもの[3]。
サーバプッシュ
サーバ側からクライアントに対しデータをプッシュ配信する機能。

プロトコル的にはTLSの拡張仕様の一つであるNext Protocol Negotiation(NPN)をベースにしているため、SPDYの使用にはHTTPSの通信が可能な環境であることが必須となる。

2012年現在は独立したプロトコルとして一部のWebブラウザやWebサーバで実装が進んでいるほか、IETFのドラフトも提出されており、標準化作業が進んでいる。さらにHTTPの新バージョンとして現在検討が進められている「HTTP 2.0」のベース技術の一つとしてSPDYが採用されるのではないかという観測もあり、Web技術者の間で注目を集めつつある。

サーバプッシュが可能という点で、類似するプロトコルであるWebSocketと比較されることも多い。

via. SPDY – Wikipedia

そんな SPDY を Nginx 1.3.x に対応させるためのパッチも提供されてます。
http://nginx.org/patches/spdy/README.txt
んっ? WordPress ユーザーには見慣れた会社名が書いてありますね。

This work has been sponsored by Automattic (http://automattic.com/).

さすが WordPress.com で Nginx を使い倒している Automattic さんや!

では、実際に CentOS 6 上の Nginx で SPDY を使う手順について解説します。
続きを読む

Nginx 用 pagespeed モジュール ngx_pagespeed を試してみたよ

Google が提供してくれている高速化モジュール mod_pagespeed ですが、今までは Apache サーバ用のモジュールしかありませんでした。
以前、安定板が出た時に試してみましたが、中々感触が良かったです。
Apache サーバ向け高速化モジュール mod_pagespeed

Nginx 用のモジュールも提供してくれないかなーとか思ってたら出てましたよ!奥さん!
というわけで、とりあえずインストールしてみました。
どんな状況になるかは、このサイトの html ソースを見てみてください。
※:現在 ngx_pagespeed モジュールは無効にしてあります
続きを読む

WordCamp Tokyo 2012

WordCamp Tokyo 2012 と PHP Conference 2012 に行ってきました

9/15 に大田区産業プラザ PiO で合同開催された WordCamp Tokyo 2012PHP Conference 2012 に行ってきました。
新しい試みのブースも盛況で、中々楽しかったです。
僕はというと PHP カンファレンスの方で「NGINX + PHP」ってセッションをやらせていただいたり(開始時、ぐだぐだになってしまいすいません)、WordCamp Tokyo 2012 の方で「AWS ハンズオン」のお手伝いをさせていただいたりしてました。

PHP カンファレンスでやったセッションのスライドはこちら

回を重ねる毎にドンドン大規模になって行くイベントですが、大きな混乱も無く、今年も非常に楽しかったです。
スタッフとして関わった方々、お疲れさまでした&ありがとうございました。

WPTouch テーマ切替

WPTouch と Nginx リバースプロキシ

WPTouch テーマ切替WordPress.com でやってるメモブログの方にも書いたんですが、WordPress プラグイン WPtouch を使用しているサイトで Nginx リバースプロキシを利用する際の Tips です。
あっちの方に書いたのは、ほんとにメモ程度なんでコードだけで分かりにくいかなぁと思いまして、こっちで詳細に説明します。

WPTouch や Ktai Style なんかを使ってクライアントのユーザーエージェント(UA)ごとに表示を変えている場合、Nginx でリバースプロキシを使用すると具合が良くありません。
普通に設定した場合、同一URLへのアクセスがあった際は UA に関係なくキャッシュされてしまいます。
この辺を回避するために、Nginx の設定ファイルで UA を判断して proxy_cache_key を変更するってのは、わりかし良く行われている作戦だと思います。
参照: WordPress サイトに nginx を導入する : dogmap.jp
ですが、これだと WP Touch にある Mobile Thema を ON/OFF するボタンに対応できません。
そんで、どうするかと言うと
続きを読む

Nginx + memcached で WordPress をキャッシングしてみる

nginxNginx + memcached が気になったので試してみました。元ネタは、下記です。
CakePHPとnginx+memcachedで手軽にキャッシュを活用する – Shin x blog

Nginx では、HttpMemcachedModule を用いることで memcached にキャッシュがあれば、それをそのままレスポンスとして返すことができます。
ただし memcached に保存するキャッシュデータは、アプリケーション側で生成してやらなければなりません。

一方、WordPress では advanced-cache.php というドロップインを作成することでキャッシュデータの制御を行うことができるので、これを作って url をキーとしたキャッシュデータを memcached に保存し、これを Nginx の HttpMemcachedModule に使わせてみました。
続きを読む

2011年の人気記事トップ10

msng さんの記事にインスパイアされてエントリ。
dogmap.jp で、この1年で良く読んでもらった記事をあげてみます。

ページビュー上位10記事だと1番アクセスがあったのは、去年どころか2007年のこの記事になっちゃうんですが、今年書いた記事にしぼって10件ほど。

全体的に WordPress の高速化の話題が多いです。
僕の興味もそっちに向いてたんで、そっち系の記事が多かったからですね。
続きを読む

Nginx に cache purge モジュールを追加する

Nginx をリバースプロキシとして使用する場合、キャッシュされたページを削除したくなることがあります。
しかし、素の Nginx ではキャッシュを削除するには、キャッシュディレクトリ配下の全ファイルをすべて削除するしか方法はありません。
(もしくは、設定時間が経過して自動削除されるのを待つか)

ページ単位で Nginx リバースプロキシのキャッシュを削除するには、ngx_cache_purge というモジュールを追加することで実現できます。
この ngx_cache_purge モジュールを組み込んだ rpm パッケージを作成する方法を説明します。

rpm パッケージの作成方法については、以前書いたエントリ「nginx 1.0.0 が出てます」を参考にしてください。
このエントリでは、ここまでの作業が終わっているものとして解説します。
続きを読む

Nginx で www 付きの URL を www 無しにリダイレクト

facebookfacebook のコメント欄とかで URL をシェアすると、ドメイン名の頭に勝手に www. 付けてくれたりして、非常に不愉快です。
例えば、こんな url をコメント欄に書くと
https://dogmap.jp/2011/10/27/ssh_config/
プレビューの所の URL を、こんな風にかきかえてくれやがります。
http://www.dogmap.jp/2011/10/27/ssh_config/
なんで、こんなことするのか謎なのですが、相手は天下の facebook 様なので、こちらで対処してやるしかないですね。
続きを読む

Nginx ドキュメントの和訳

ハイパフォーマンスHTTPサーバ Nginx入門ありがたいことにたいさんが、Nginx のドキュメントを次々と和訳してくれています。
「ある程度量がまとまったら nginx の中の方に連絡をとって nginx サイトに入れてもらいたいと考えて」いるとのこと。
私も、技術用語とか言い回しのチェックをさせていただきました。

現在、和訳終わった分については以下の URL で参照できます。

Nginx + lsyncd で WordPress を負荷分散させる

ハイパフォーマンスHTTPサーバ Nginx入門最近、め組ことデジタルキューブさんと、一緒に仕事をやらせてもらってます。
今の所は、主に WordPress サイトの高速化とかやってるんですけど、その中で WordPress サイトを複数台のサーバで負荷分散させて高速化させる案件があったので、その時の作業内容をシェア。
最近はさくらの VPS とか、低価格の VPS が出てきてるので、個人でも手を出せる領域かもしれませんね。
今回は2台のサーバを使って PHP の処理を負荷分散しました。

構成は、こんな感じです。

  • プライマリサーバ ( vps1.example.com : 192.168.0.1 )
     

    • Nginx, Load Balancer、PHP FastCGI のアプリケーションサーバ
    • lsyncd (リアルタイム rsync を実現するためのサービス)
  • セカンダリサーバ ( vps2.example.com : 192.168.0.2 )
     

    • Nginx, PHP FastCGI のアプリケーションサーバ
    • MySQL
    • rsyncd

※ 説明のため IP アドレスはローカルアドレスに設定していますが、実際にはグローバルアドレスを使用しています。
ブラウザからの要求は、すべてプライマリサーバ ( vps1.example.com ) が受け取り、PHP の処理を二台のサーバに分散させます。
もちろん、処理が重くなってきたら、3台目、4台目 と追加していくことが可能です。
続きを読む