Category Archives: Nginx

Nginx

実例で学ぶ、Nginxのrewriteに指定できるbreakとlastの違い

Nginxのrewriteで指定できるlastbreakの違いを、実例を交えて紹介します。実例には、「apple-touch-iconの様々なサイズのリクエストに対して、一種類だけ用意したアイコン画像を返す」を使用します。

/apple-touch-icon.pngを返すために、Nginxの設定にはこんな感じで記述しておきます。

location ~ ^/apple-touch-icon(.*)\.png$ {
    root /tmp/nginx/;
    %rewriteルール%
}

上記の%rewriteルール%に以下の4つのどれかを書いたとします。

  1. rewrite ^(.*)$ /apple-touch-icon.png break;
  2. rewrite ^(.*)$ /apple-touch-icon.png last;
  3. rewrite ^/apple-touch-icon(.+)\.png$ /apple-touch-icon.png break;
  4. rewrite ^/apple-touch-icon(.+)\.png$ /apple-touch-icon.png last;

この中で、2番目のrewrite ^(.*)$ /apple-touch-icon.png last;だけは、/apple-touch-icon.pngにアクセスするとHTTPステータスコード500が返ってくるようになってしまいます。この記事ではその原因を紹介します。

read more »

Nginx

【X-Accel-Expires】Nginxのキャッシュ時間をWordPress側で制御する方法

Nginxのfastcgi_cacheなどのキャッシュ時間を、WordPress側で制御する方法を紹介します。WordPress側で制御することにより、個別記事ページでは1時間キャッシュさせ、アーカイブページでは1日キャッシュさせるなど、ページごとにキャッシュ時間を変更できます。

また、投稿直後は変更の可能性を考えて、キャッシュ時間を短くすることなどができます。例えば、「投稿から1日経過するまでは、キャッシュ時間を1分間にする」などです。

read more »

Nginx

過度のアクセスに備える(その2)!!Nginxのlimit_reqの設定と検証

Nginxのモジュールngx_http_limit_req_moduleの使い方と、動作検証の結果をまとめました。このモジュールを使うと、単位時間あたりにリクエストできる数に制限をかけることができます。

例えば、同一IPから秒間10アクセス以上発生していた場合に、遅延を発生させることなどができます。また、遅延を発生させずに、即座に503エラーを返すこともできます。

※同じような過度のアクセスへの対策である、limit_connに関してはこちらのページにまとめてあります。

read more »

Nginx

過度のアクセスに備える(その1)!!Nginxのlimit_connの設定と検証

過度のアクセスを防ぐNginxのモジュール、ngx_http_limit_conn_moduleを紹介します。このモジュールを使うと、同一IPからの同時接続がある一定数越えたときにステータスコード503を返すことができるようになります。

なお、当記事で試したNginxのバージョンは1.6.3です。

read more »

Nginx

大トラブル発生!?nginxのキャッシュ設定で気をつけたいこと

結論からお伝えします。Nginxのキャッシュのキー指定時には、$request_methodを追加しておいたほうがいいです。これをしておかないと、わたしが陥ったトラブルに遭遇する可能性があります。。。

read more »