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

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

2011年6月30日 2014年1月14日
nginx cache remove

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

このリバースプロキシサーバーは、キャッシュ機能を持っていますが、そのキャッシュを削除する機能を持っていません。

つまり、キャッシュを削除したい場合は、

  • 時間経過による自動削除を待つか、
  • キャッシュディレクトリの配下の全ファイルを丸ごと削除してしまうか、

など、いろいろな方法があります。(詳しくは、nginx でリバースプロキシ、FastCGIキャッシュのキャッシュを削除する方法をまとめて解説してみた を参照してください。)

nginxのキャッシュを削除するには、1つのやり方としてnginx cache purge というnginxのモジュールを追加することで各ページごとにキャッシュを削除できるようになります。
nginxの場合、モジュールを組み込むには、rpmのビルド(再構築)を行う必要があります。

nginx cache purge モジュールをnginxに組み込むためのrpmのビルド(再構築)する方法は、

を参照してください。

ここでは、既に組み込まれているいるnginxを利用しているものとして、以降、記述します。

nginx cache purgeモジュールの設定を行う

ここでは、

前回「Nginx をリバースプロキシ(キャッシュ) として使ってみた」で編集、作成したnginx.confを、再編集してみましょう。
この色の箇所が、nginx cache purgeモジュールのための編集箇所になります。

/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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
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/html 
                      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;
    proxy_buffer_size     8k;
    proxy_buffers         100 8k;
    proxy_cache_path      /var/cache/nginx/domain1.com levels=1:2 keys_zone=cache_domain1.com:15m inactive=7d max_size=1000m;
    proxy_temp_path       /var/cache/nginx/temp 1 2; 
    proxy_connect_timeout 60;
    proxy_read_timeout    90;
    proxy_send_timeout    60;
    proxy_cache_valid     200 2h;
    proxy_cache_valid     302 2h;
    proxy_cache_valid     301 4h;
    proxy_cache_valid     any 1m;
    
    # set header
    proxy_set_header Host            $http_host;
    proxy_set_header X-Remote-Addr   $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # backend
    upstream www.domain1.com.backend {
        ip_hash;
        server 127.0.0.1:8080;
    }

    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;
        }
        
        # wordpress proxy common settings.
        location ~ /wp-admin/ {
            access_log     off;
            proxy_pass http://$host.backend;
        }
        
        location ~ /wp-includes/ {
            access_log     off;
            proxy_pass http://$host.backend;
        }
        
        location ~ /wp-cron.php {
            access_log     off;
            proxy_pass http://$host.backend;
        }
        location ~ /wp-comments/ {
            access_log     off;
            proxy_pass http://$host.backend;
        }
        
        location ~ /wp-login.php {
            access_log     off;
            proxy_pass http://$host.backend;
        }
        
        location ~ /wp-content/ {
            access_log     off;
            proxy_pass http://$host.backend;
        }

        # Proxy
        location / {
            set $do_not_cache 0;
            
            # comment auther or login ?
            if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
                set $do_not_cache 1;
            }
            # Kei-tai ?
            if ($http_user_agent ~* “2.0\ 2MMP|240×320|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;
            }
            
            proxy_no_cache     $do_not_cache;
            proxy_cache_bypass $do_not_cache;
            
            proxy_pass http://$host.backend;
            proxy_cache_key $scheme://$host$request_uri
            
            proxy_cache        cache_domain1.com;
        }
        location ~ /purge(/.*) {
            # proxy cache clear allow IP.
            allow              127.0.0.1;
            allow              111.111.111.111;
            deny               all;
            
            proxy_cache_purge  cache_domain1.com "$scheme://$host$1";
        }
    }
    server {
        listen      8080;
        server_name domain1.com www.domain1.com;
        index       index.php index.html index.htm;
        root        /var/www/html;

        if ($http_host = domain1.com) {
            rewrite  (.*)  http://www.domain1.com$1;
        }
        try_files $uri $uri/ /index.php?q=$uri&$args;
        
        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;
    }
}
proxy_cache_purge cache_domain1.com “$scheme://$host$1”;
削除したいキャッシュ情報のゾーン名、キー情報を指定します。
ここでは、
ゾーン名 : cache_domain1.com ( キャッシュのゾーン名をそのまま指定します )
キー情報 : $scheme://$host$1 ( $1は、http://www.domain1.com/purge/xxxx purge以降の文字列を指します。 )

つまり、
http://www.domain1.com/aaa.html というキャッシュされたアドレスがあるとします。

このキャッシュを削除したい場合は、
http://www.domain1.com/purge/aaa.html と指定します。

このアドレスをウェブブラウザなどからアクセスすれば、キャッシュを削除することができます。
ウェブブラウザでアクセスしてみてください。削除できたら以下のような画面が表示されます。
キャッシュ削除

allowで、あなたのPCのIPアドレスは登録しておきましょう。
ここでは、http://www.domain1.com/purgeへアクセスできるのは、
127.0.0.1
111.111.111.111
この2つのIPアドレスからアクセスのみ許可されています。自分がアクセスするためのPCのIPアドレスぐらいは、設定していないと確認できません。

これで、Wordpressなどでも更新したとき、キャッシュの削除を行うことができますね。
このような手段がないと、ディレクトリを全部削除しないといけないなど、ちょっと、効率が悪かったりします。
rpmの再構築だけが、ちょっと面倒かもしれませんが、これも慣れです。
一度やってもると後はスイスイいけます。

nginxのリバースプロキシのキャッシュをページごとに削除したい方は、一度お試されると良いと思います。
ここでは、さくらのVPS を使用しています。
さくらのVPSのお申し込みは、こちらさくらのVPSページへ からどうぞ。

ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

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

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

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

ウェブサーバーのキャッシュ機能は、動的なページの高速化にかなり役立ちます。 例えば、Wordpressなどは覿面(てきめん)で ...

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

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

nginx でリバースプロキシ、FastCGIキャッシュのキャッシュを削除する方法をまとめて解説してみた

nginx でリバースプロキシのキャッシュを削除する方法は、一応、色々な方法があります。 Nginx をリバースプロキシ(キャッシュ) ...

Wordpress Nginx proxy cache integratorというプラグインの働きは?

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


1 件 コメントがあります。 コメントを投稿する
  1. […] […]


コメントを投稿 :

お名前 *

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

サイトアドレス

コメント *

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




最近投稿の記事

[ 画像提供元 : 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.2847 [s]