おはよう、ハブル!
この記事では、FastCGI要求をキャッシュするためのnginx構成の例を示します。 必要に応じて、一部はDDoSからhabraeffectから保護し、オプションとして、高負荷のサーバーの寿命を延ばすために使用できます。
「http」セクションでは、fastcgi_cacheキャッシュゾーンを宣言します。キャッシュは/ tmp / nginxフォルダーに2レベルのネストで保存され、最大サイズは256 MB、キーキャッシュは16 MBです(1日以上使用されていないオブジェクトは自動的に削除されます):
fastcgi_cache_path / tmp / nginx / levels = 1:2 keys_zone = fastcgi_cache:16m max_size = 256m inactive = 1d;
次に、「サーバー」セクションで、対応する場所を編集します。
場所〜\ .php $ {
#PHPの標準構成
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME / usr / local / www / somedir / $ fastcgi_script_name;
fastcgi_paramsを含めます。
fastcgi_param DOCUMENT_ROOT / usr / local / www / somedir /;
fastcgi_pass_header cookie; #cookieを適切な変数に渡す必要があります。たとえば、phpsessidという名前のcookieは変数に格納されます$ cookie_phpsessid
fastcgi_ignore_headers Cache-Control Expires Set-Cookie; #FastCGIサーバーから受信したキャッシュヘッダーを無視する
fastcgi_cache_key "$ server_addr:$ server_port $ request_uri | $ cookie_phpsessid"; #一意のキーを形成します。 この場合、$ cookie_phpsessidでユーザーを区別します
fastcgi_cache fastcgi_cache; #上記で宣言したfastcgi_cacheキャッシュゾーンを使用する必要があると言います
fastcgi_temp_path / tmp / nginx / temp 1 2; #一時ファイルを保存するフォルダーを指定する
fastcgi_cache_use_stale更新エラータイムアウトinvalid_header http_500; #エラーが発生した場合、キャッシュオプションを使用します(廃止された場合でも)
fastcgi_cache_valid 10s; #回答200、301、302のキャッシュライフタイム
#fastcgi_cache_valid any 10s; #この方法で回答をキャッシュできます
}
構成は、nginxバージョン> = 0.7.60でテストされました(=> 0.8.1で動作するはずですが、テストされていません)。
ドキュメント:
モジュールディレクティブngx_http_fastcgi_module 、
Changelog 。
upd: Cache-ControlヘッダーとExpiresヘッダーを無視しない場合、nginxはそれらのコンテンツに従って動作します(原則として論理的です)。
upd / 2011年1月28日:Set-Cookieパラメータがfastcgi_ignore_headersに追加されました(nginx / 0.8.44以降)upd / 02/07/2011:検索クローラーの分離を実装する必要があります。 無視された場合、Cookieが発行から破棄される可能性があります