レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

Nginx のFastCGIキャッシュ(fastcgi cache )を使ってみた

2013年4月26日 2014年2月3日
nginx fastcgi cache

ウェブサーバーのキャッシュ機能は、動的なページの高速化にかなり役立ちます。 例えば、Wordpressなどは覿面(てきめん)です。キャッシュ機能の有無で、体感する表示速度は10倍以上になることがあります。(もちろんキャッシュされている場合です)

そのキャッシュ機能で有名なウェブサーバーの一つがNginxです。(Squidやvarnish などキャッシュエンジンと呼ばれるキャッシュに特化した有名なサーバーもありますが、ここではウェブサーバーの機能も併せ持つという意味で書いています。)
Nginxのキャッシュ機能には、大きく2つあります。

  • proxy cache

    Nginxがバックエンドのサーバーに処理を渡した結果をキャッシュする機能です。

  • fastcgi cache

    NginxのFastCGIのレスポンスを直接キャッシュする機能です。

Nginx をリバースプロキシ(キャッシュ) として使ってみた で解説した リバースプロキシの設定例は、proxy cache に相当します。
このリバースプロキシにおけるキャッシュ(proxy cache)を簡単に解説するには、以下のような図が参考になるかと思います。

リバースプロキシのキャッシュのルート
  1. キャッシュを使わない :
    1. → Nginx(Proxy) → Nginx(Web) → FastCGI(PHP etc)

      要求されたページが、キャッシュ非対象か、あるいはキャッシュにない場合は、上記の経路で動的なページを作成します。
      もちろん、ここでのNginx(Web)は、Apache(Web)でもOKですし、FastCGI(PHP etc)は、PHPモジュールなどでも良いです。
      あくまで、以下のようにウェブサーバーからの戻りをキャッシュ保存するため、ウェブサーバー以降が何であるのかは問われません。

    2. ← Nginx(Proxy) ← Cache ← Nginx(Web) ← FastCGI(PHP etc)

      先にも書いたように、ここでもポイントは、ウェブサーバーからのレスポンスをキャッシュする点です。

  2. キャッシュを返信する :

    要求されたページが、キャッシュにある場合は、そのキャッシュ内容をそのまま返信します。


また、先のproxy cache に対してfastcgi cacheを簡単に解説するには、以下のような図が参考になるかと思います。

FastCGIのキャッシュのルート
  1. キャッシュを使わない :
    1. Nginx(Proxy) → Nginx(Web) → FastCGI(PHP etc)

      要求されたページが、キャッシュ非対象か、あるいはキャッシュにない場合は、上記の経路で動的なページを作成します。
      先のproxy cache との違いは、プロキシサーバーが存在しないことです。
      このfastcgi cacheでは、もちろん、ウェブサーバーは、Nginx(Web)でなければなりませんし、FastCGI(PHP etc)は、FastCGI以外にありません。

    2. Nginx(Proxy) ← Nginx(Web) ← Cache ← FastCGI(PHP etc)

      ここでもポイントは、FastCGIからのレスポンスをキャッシュする点です。

  2. キャッシュを返信する :

    要求されたページが、キャッシュにある場合は、そのキャッシュ内容をそのまま返信します。


上記のとおりプロキシサーバーの機能が、すっぽり無くなったのが、fastcgi cacheになります。

proxy cacheでは、図のようにサーバーの分散化を容易に図れるような仕組みになっています。
逆にfastcgi cacheでは、サーバーの分散化というより動的ページのキャッシュがメインの仕組みになっています。

Nginx をリバースプロキシ(キャッシュ) として使ってみた の例では、1台のサーバーでリバースプロキシを実現しました。 これは、サーバーの分散化を図ったものでなく、キャッシュをメインに行うための構成です。 そのキャッシュだけを考えると、fastcgi cacheが如何に効率的かは、上図でも簡単に示せていると思います。

今回は、そのキャッシュ機能が効率的なfastcgi cacheNginxでのリバースプロキシの設定例 と同じように 解説してみます。

キャッシュの削除方法は、リバースプロキシ(reverse proxy server)のそれと同じですので、以下の記事が参考になるかと思います。
nginx でリバースプロキシ、FastCGIキャッシュのキャッシュを削除する方法をまとめて解説してみた

さくらのVPSでのnginx の設定例

以下は、Nginx + php-fpm をさくらのVPSで使ってみた で使用した さくらのVPS での nginx の設定例を FastCGIキャッシュ用に編集したものです。

今回のFastCGIキャッシュに関する編集箇所は、
赤:FastCGIキャッシュに関する追加あるいは編集箇所青:Wordpress関連事項の追加あるいは設定箇所
で、それぞれ色分けしています。


/etc/nginx/nginx.confの設定例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
user       apache apache;
worker_processes  2;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
worker_rlimit_nofile 1024;

events {
    worker_connections  1024;
}
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio"';

    access_log  /var/log/httpd/access.log  main;

    sendfile        on;
    tcp_nopush      off;

    keepalive_timeout  0;

    gzip              on;
    gzip_http_version 1.0;
    gzip_types        text/plain 
                      text/xml 
                      text/css 
                      application/xml 
                      application/xhtml+xml 
                      application/rss+xml 
                      application/atom_xml 
                      application/javascript 
                      application/x-javascript 
                      application/x-httpd-php;
    gzip_disable      "MSIE [1-6]\.";
    gzip_disable      "Mozilla/4";
    gzip_comp_level   2;
    gzip_vary         on;
    gzip_proxied      any;
    gzip_buffers      4 8k;

    server_names_hash_bucket_size 128;    #    32/64/128

    proxy_buffering       on;
    fastcgi_buffer_size     8k;
    fastcgi_buffers         100 8k;
    fastcgi_cache_path      /var/cache/nginx/domain1.com levels=1:2 keys_zone=cache_domain1.com:15m inactive=7d max_size=1000m;
    fastcgi_temp_path       /var/cache/nginx/temp 1 2; 
    fastcgi_connect_timeout 60;
    fastcgi_read_timeout    90;
    fastcgi_send_timeout    60;
    fastcgi_cache_valid     200 2h;
    fastcgi_cache_valid     302 2h;
    fastcgi_cache_valid     301 4h;
    fastcgi_cache_valid     any 1m;


    server {
        listen 80;
        server_name domain1.com www.domain1.com;
        access_log   /var/log/httpd/domain1.com.access.log;
        error_log    /var/log/httpd/domain1.com.error.log;
    
        if ($http_host = domain1.com) {
            rewrite  (.*)  http://www.domain1.com$1;
        }

        location  / {
            
            # for wordpress custom url.
            try_files $uri $uri/ /index.php?q=$uri&$args;
            
            # fastcgi-cache on/off flag
            set $do_not_cache 0;
            
            ### wordpress cache common settings.
            # check to do not cache
            #  -- POST ?
            # if ($request_method = "POST") {
            #  -- POST or HEAD ?
            if ($request_method != "GET") {
                set $do_not_cache 1;
            }
    
            #  -- Login or Comment or Post Editting ?
            if ($http_cookie ~ ^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$) {
                set $do_not_cache 1;
            }
    
            #  -- mobile ?
            if ($http_x_wap_profile ~ ^[a-z0-9\"]+) {
                set $do_not_cache 1;
            }
    
            #  -- Mobile ?
            if ($http_profile ~ ^[a-z0-9\"]+) {
                set $do_not_cache 1;
            }
    
            #  -- Kei-tai ?
            if ($http_user_agent ~ ^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).*) {
                set $do_not_cache 1;
            }
    
            #  -- Mobile ?
            if ($http_user_agent ~ ^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).*) {
                set $do_not_cache 1;
            }
    
            #  -- Kei-tai ?
            if ($http_user_agent ~ ^(DoCoMo/|J-PHONE/|J-EMULATOR/|Vodafone/|MOT(EMULATOR)?-|SoftBank/|[VS]emulator/|KDDI-|UP\.Browser/|emobile/|Huawei/|IAC/|Nokia|mixi-mobile-converter/)) {
                set $do_not_cache 1;
            }
    
            #  -- Kei-tai ?
            if ($http_user_agent ~ (DDIPOCKET\;|WILLCOM\;|Opera\ Mini|Opera\ Mobi|PalmOS|Windows\ CE\;|PDA\;\ SL-|PlayStation\ Portable\;|SONY/COM|Nitro|Nintendo)) {
                set $do_not_cache 1;
            }
            ### wordpress cache common settings.
            
            # set fastcgi-cache on/off flag
            fastcgi_no_cache     $do_not_cache;
            fastcgi_cache_bypass $do_not_cache;
        
            # set fastcgi-cache key
            fastcgi_cache_key    $scheme://$host$request_uri;
            # set fastcgi-cache zone
            fastcgi_cache        cache_domain1.com;
    
            # do not logging
            location ~* \.(gif|jpg|png|ico|css|js)$ {
                access_log        off;
            }
            
            location ~ /wp-admin {
                access_log     off;
                include        php_exec;
            }
            location ~ /wp-content {
                access_log     off;
                include        php_exec;
            }
            location ~ /wp-includes {
                access_log     off;
                include        php_exec;
            }
            location ~ /wp-cron.php {
                access_log     off;
                include        php_exec;
            }
            location ~ /wp-login.php {
                access_log     off;
                include        php_exec;
            }
            location ~ /wp-comments {
                access_log     off;
                include        php_exec;
            }
            
            include        php_exec;
        }
    }
}

/etc/nginx/php_execの設定例

1
2
3
4
5
6
location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

nginx http部

fastcgi_buffer_size     8k;
FastCGIのレスポンス用バッファサイズ(4k or 8k)を設定します。デフォルトは、fastcgi_buffersの1つのバッファサイズと同じです。
ここでは、バッファサイズを8kにしています。
fastcgi_buffers         100 8k;
FastCGIの応答のバッファサイズ(4k or 8k)とその個数を設定します。デフォルトは、個数は 8 個で、バッファサイズはシステムに依存します。
ここでは、バッファサイズを8kにし、個数を100個まで持つように設定しています。
fastcgi_cache_path      /var/cache/nginx/domain1.com levels=1:2 keys_zone=cache_domain1.com:15m inactive=7d max_size=1000m;
キャッシュのパス、キャッシュパラメータを設定します。
キャッシュされたデータはファイルに格納されています。 プロキシされたURLのMD5ハッシュは、キャッシュエントリのキーとして使用され、応答の内容とメタデータのキャッシュのパスにファイル名としても使用されます。
レベルのパラメータは、キャッシュ内のサブディレクトリレベル数を設定します。

levels=1:2
levelは、キャッシュパスの配下のサブディレクトリの文字数を設定するものです。最大で3階層( ex. 1:2:3 )まで指定できます。
ここでは、levels=1:2と指定しています。つまり、1階層目は1文字、2階層目は2文字でサブディレクトリが作成されることを意味します。
keys_zone=cache_domain1.com:15m
keys_zoneは、キャッシュパスのゾーン名、ゾーンサイズを設定するものです。最大で3階層( ex. 1:2:3 )まで指定できます。
ここでは、ゾーン名をcache_domain1.comとし、ゾーンサイズを15MBで指定しています。ここで、メモリが15MB消費されることに注意してください。
inactive=7d
inactiveは、非アクセス時間を設定します。ここで設定した日時を越えたキャッシュ情報は、自動的に削除されます。
ここでは、7日間( 7d )を指定しています。つまり、特別に何もなければキャッシュは、一週間保存されることになります。
max_size=1000m;
max_sizeは、キャッシュのファイルサイズ(ゾーン内の全てのキャッシュファイルサイズ)の最大値を設定します。
ここでは、1000MBつまり1GBと指定しています。ここでは、zone_size と max_sizeのいずれかががサイズオーバーになった時点でキャッシュが停止します。
fastcgi_temp_path       /var/cache/nginx/temp 1 2; 
キャッシュのテンポラリパスを設定します。
ここでもfastcgi_cache_pathと同じようにlevelを追加で指定することができます。しかし、一般的にレベルは使わないことが多いようです。
ここでは、fastcgi_cache_pathのレベルと同じにしています。
fastcgi_connect_timeout 60;
上位サーバ(upstream server)への接続のタイムアウト(秒)を設定します。60(秒)がデフォルト値で、75(秒)以上は設定できません。
ここでは、60(秒)を設定しています。
fastcgi_read_timeout    90;
FastCGIの応答の読み取りタイムアウトを設定します。 それは、nginxへの要求に対して応答を取得するためにどれくらい待つかを決定します。 60(秒)がデフォルト値です。
ここでは、90(秒)と若干長めに設定しています。
phpの処理などで応答までの最大となる時間を設定するのが良いとされています。
fastcgi_send_timeout    60;
上位サーバ(upstream server)へのリクエストの転送タイムアウト(秒)を設定します。 60(秒)がデフォルト値です。
ここでは、60(秒)を設定しています。
fastcgi_cache_valid     200 2h;
fastcgi_cache_valid     302 2h;
fastcgi_cache_valid     301 4h;
fastcgi_cache_valid     any 1m;
HTTPステータスコード毎にキャッシュ時間を設定します。
ここでは、以下のように設定しています。
HTTPステータスコードキャッシュ時間
200
(OK:OK)
2時間 (2h)
302
(Moved Temporarily:一時的に移動)
2時間 (2h)
301
(Moved Permanently:恒久的に移動)
4時間 (4h)
上記以外1分 (1m)
この設定では、正常なページ応答は、2時間の間キャッシュされ、同じものが返信されることになります。

nginx server部

listen       80;
TCPポート番号を設定します。デフォルトでは、80番になります。
一般的に公開するウェブサーバーなら80番を使います。
SSLの場合は、443番を使います。
server_name  domain1.com www.domain1.com;
サーバー名を設定します。
ここでは、domain1.comwww.domain1.com の2つを同時に定義しています。
access_log   /var/log/httpd/domain1.com.access.log main;
アクセスログの保存形式、保存先を設定します。
ここでは、アクセスログをログフォーマットmain の形式で、/var/log/httpd/domain1.com.access.log へ保存します。
ここでは、論理パスを使用しても良いです。その場合、論理パスのルートディレクトリは、linuxでは、/usr/share/nginx/ となります。
error_log   /var/log/httpd/domain1.com.error.log;
エラーログの保存先を設定します。
ここでは、/var/log/httpd/domain1.com.error.log へ保存します。
ここでは、論理パスを使用しても良いです。その場合、論理パスのルートディレクトリは、linuxでは、/usr/share/nginx/ となります。
if ($http_host = domain1.com) {
    rewrite  (.*)  http://www.domain1.com$1;
}
ここでは、$http_host(ホスト名)が、domain1.com(ドメイン名)のみの場合、www.domain1.com へリダイレクトします。
先のserver_nameの設定で、
domain1.comwww.domain1.comいずれも使えるように設定されています。
上記の2つのホスト名でアクセスされて違うコンテンツが表示されるのであれば良いですが、同じものが表示されるのであればSEO的に良くないので、ここでは、www.domain1.comに統一しています。
try_files $uri $uri/ /index.php?q=$uri&$args;
Wordpressのカスタムパーマネントリンクの対応行っています。
要求されたURIが、ファイルあるいはディレクトリが存在するかチェックし、存在しない場合は、index.php へリダイレクトします。
# fastcgi-cache
set $do_not_cache 0;

### wordpress cache common settings.
# check to do not cache
#  -- POST ?
if ($request_method = "POST") {
    set $do_not_cache 1;
}

#  -- Login or Comment or Post Editting ?
if ($http_cookie ~ ^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$) {
    set $do_not_cache 1;
}

#  -- mobile ?
if ($http_x_wap_profile ~ ^[a-z0-9\"]+) {
    set $do_not_cache 1;
}

#  -- Mobile ?
if ($http_profile ~ ^[a-z0-9\"]+) {
    set $do_not_cache 1;
}

#  -- Kei-tai ?
if ($http_user_agent ~ ^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).*) {
    set $do_not_cache 1;
}

#  -- Mobile ?
if ($http_user_agent ~ ^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).*) {
    set $do_not_cache 1;
}

#  -- Kei-tai ?
if ($http_user_agent ~ ^(DoCoMo/|J-PHONE/|J-EMULATOR/|Vodafone/|MOT(EMULATOR)?-|SoftBank/|[VS]emulator/|KDDI-|UP\.Browser/|emobile/|Huawei/|IAC/|Nokia|mixi-mobile-converter/)) {
    set $do_not_cache 1;
}

#  -- Kei-tai ?
if ($http_user_agent ~ (DDIPOCKET\;|WILLCOM\;|Opera\ Mini|Opera\ Mobi|PalmOS|Windows\ CE\;|PDA\;\ SL-|PlayStation\ Portable\;|SONY/COM|Nitro|Nintendo)) {
    set $do_not_cache 1;
}
### wordpress cache common settings.

Wordpressの対応で、以下の場合にキャッシュしないように$do_not_cache への設定を行っています。
  • post処理中の場合
  • WordPressにログイン中、コメント中、記事作成中の場合
  • 携帯およびモバイル機器からのアクセスの場合
fastcgi_no_cache     $do_not_cache;
どのような場合に応答情報をキャッシュしないかを設定します。
ブランク以降に指定するパラメータの少なくとも1つ以上の値が0でない場合は、応答情報をキャッシュしません
fastcgi_cache_bypass $do_not_cache;
どのような場合に応答情報をキャッシュ情報から返信しないかを設定します。
ブランク以降に指定するパラメータの少なくとも1つ以上の値が0でない場合は、キャッシュされた情報から応答を返信しません
fastcgi_cache_key $scheme://$host$request_uri
キャッシュするときのキー情報を設定します。
ここで設定する情報が、キャッシュ情報を読み込むときのキー情報になります。そのため、正しく設定しないと思わぬキャッシュ情報が表示されてしまうことがあります。
ここでは、$scheme://$host$request_uri と指定しています。
fastcgi_cache        cache_domain1.com;
キャッシュ用にゾーンの名前を設定します。
http部で設定したfastcgi_cache_pathのキャッシュゾーン名を指定します。
ゾーン名自体は、複数のlocationで使用することができます。
location ~* \.(gif|jpg|png|ico|css|js)$ {
    access_log        off;
}
location ~ /wp-admin {
    access_log     off;
    include        php_exec;
}
location ~ /wp-content {
    access_log     off;
    include        php_exec;
}
location ~ /wp-includes {
    access_log     off;
    include        php_exec;
}
location ~ /wp-cron.php {
    access_log     off;
    include        php_exec;
}
location ~ /wp-login.php {
    access_log     off;
    include        php_exec;
}
location ~ /wp-comments {
    access_log     off;
    include        php_exec;
}
include        php_exec;
Wordpressの対応処理で、以下のディレクトリあるいはファイル名の場合、アクセスログへの書き込みを行わずにページ出力を行うようにします。
  • /wp-admin
  • /wp-content
  • /wp-includes
  • /wp-cron.php
  • /wp-login.php
  • /wp-comments

php_exec部

PHPのファイル拡張を持つ場合の動作を定義します。

location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
FastCGIの対応を設定しています。

fastcgi_pass   127.0.0.1:9000;
FastCGIが開いているソケットあるいはポートへのパスを設定します。
ここでは、FastCGIのサーバーおよびポート番号を設定します。
fastcgi_index  index.php;
FastCGIのファイル名省略時のデフォルトファイル名を設定します。
ここで指定されたファイル名は、/ で終了しているURIの場合、変数$fastcgi_script_nameに格納されます。
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
FastCGIサーバのパラメータを設定します。
ここでは、SCRIPT_FILENAME パラメータを $document_root + $fastcgi_script_name 定義しています。
include        fastcgi_params;
FastCGIサーバのデフォルトパラメータを読み込みます。
いかがだったでしょうか?
リバースプロキシは、もう一つサーバーを立ち上げる感じですが、こちらは一つのサーバーの中でキャッシュができるイメージで、リソース的にも設定の手間からも かなり楽ですね。

さらに、 ここで使用したディレクティブは、ほとんどが、Nginxでのリバースプロキシの設定例 でも同じ機能を持つディレクティブを使用していたため、 そちらをを理解されている方であれば、これは、非常に簡単だったのではないかと思います。

セッティングの楽さもさることながら、Nginxがこれだけキャッシュ機能で有名になったかというと、そもそもが、静的なページ(ファイル)の速度が非常に安定して、高速だったのが一つの要因だと思います。 加えて、この fastcgi cache で動的なページの速度が向上したことで、全体的な速度向上と安定感をもたらしたのだと思います。

逆にApacheは、静的なページ(ファイル)の速度が最初こそ速いのですが、リクエスト数が増えてくると、もっさりとした動作になってしまいます。 そのため、Squidやvarnish などキャッシュエンジンと呼ばれるキャッシュに特化したサーバーが重宝され、有名になったという経緯があります。

Squidやvarnish などが静的なページ(ファイル)も含めてキャッシュ化による高速化を図るのに対して、 Nginxは、そもそも静的なページ(ファイル)の速度は安定して速いので、動的ページだけのキャッシュ化による高速化で全体的な速さを図っています。 あらためて、Nginxは良くできてるなぁと感心しています。

また、ここで設定したディレクティブは一部です。 まだまだ設定できる情報も多いので、詳しい(設定できる)ディレクティブ情報は、nginxのホームページ( http://wiki.nginx.org/HttpFastcgiModule )を参照してください。

このFastCGIキャッシュは、リバースプロキシ以上にサーバーにやさしく、高速化、効率化が望めます。
もし、速度やリソースに不満のある方は、一度、試すのもありだと思います。

ここでは、さくらのVPS の最もリソースの少ない1Gプラン を使用して確認しました。これでも十分いけますね。
さくらのVPSのお申し込みは、http://vps.sakura.ad.jp/ からどうぞ。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

Nginxのproxyでキャッシュを削除する方法

前回「Nginx をリバースプロキシ(キャッシュ) として使ってみた」では、 nginxをリバースプロキシサーバーとして使ってみま ...

Nginx で Wordpress を使う時の注意点

Nginx 上で WordPress を動作される場合、いろいろな注意点があります。 今回は、その注意点について、簡単に解説してみたいと思いま ...

Nginx をリバースプロキシ(キャッシュ) として使ってみた

前回「Nginx + php-fpm をさくらのVPSで使ってみた」では、 nginxをウェブサーバーとして使ってみました。実際に ...

Nginx + php-fpm でWordpressを動かしてみる

ここまで、nginx + php-fpmのインストールと簡単なセットアップ方法について解説してきました。 CentOS / Sc ...

Nginx でPHPを動かす(php-fpmをバイナリパッケージ(rpm)を作成し、インストールする) [PHP5.2系の場合]

前回の「Nginxの最新版ソースから バイナリパッケージ(rpm)を作成し、インストールする」に続けて、nginxと一緒にPHPを動作させたいと ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.3434 [s]