环境介绍:当前系统Centos7.5,nginx版本1.14.0,ngx_cache_purge(清理nginx缓存的一个插件)模块版本2.3,当前IP192.168.50.101

1、下载解压ngx_cache_purge模块

cd /usr/local/src
wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz
tar zxf 2.3.tar.gz



2、下载解压nginx



wgethttp://nginx.org/download/nginx-1.14.0.tar.gz
tarzxfnginx-1.14.0.tar.gz

3、创建nginx启动用户并安装所需依赖

useradd -s /bin/false -M www
yum install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel


4、正式编译nginx

cd nginx-1.14.0
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --add-module=../ngx_cache_purge-2.3
make
make install



5、设置systemctl

ln -sv /usr/local/nginx/sbin/nginx /usr/local/sbin/
1
ln-sv/usr/local/nginx/sbin/nginx/usr/local/sbin/
vi /usr/lib/systemd/system/nginx.service
1
vi/usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

6、启动nginx并设置开机自启

systemctl start nginx
systemctl enable nginx


7、创建一个用于缓存的目录


mkdir-p/data/ngx_cache

8、创建一个主页文件以便后续演示用


vi/data/index.html

9、配置nginx缓存

nginx缓存服务器的配置主要是通过proxy_cache相关命令来实现的,我这里只给出缓存相关的配置,其他参数不做说明。

在nginx.conf配置以下内容

http {
......
proxy_cache_path /data/ngx_cache levels=1:2 keys_zone=whsir_com:10m max_size=10g inactive=60m use_temp_path=off;
......
server {
listen 8080;
server_name 127.0.0.1;
root /data/;
}
server {
......
listen 80;
server_name 192.168.50.101;
location / {
proxy_cache whsir_com;
proxy_cache_valid 200 302 304 60m;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:8080;
expires 3d;
}
location ~ /purge(/.*) {
allow 127.0.0.1;
allow 192.168.50.0/24;
deny all;
proxy_cache_purge whsir_com $host$1$is_args$args;
}
location ~ .*\.(jsp|php)?$ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:8080;
}

10、一些参数解释

针对缓存部分,这里做一些参数的解释

proxy_cache_path:定义缓存存储位置

levels=1:2:设置缓存目录深度,最多能创建3层。

keys_zone=my_cache:10m:定义缓存区域名称和内存缓存空间大小。

max_size=10g:磁盘缓存空间最大使用值,达到配额后删除最少使用的缓存文件。

inactive=60m:设置缓存时间,60分钟内没有被访问过就删除。

use_temp_path=off:不使用temp_path指定的临时存储路径,直接将缓存文件写入指定的cache文件中,建议off。


proxy_cache_path:定义缓存存储位置
levels=1:2:设置缓存目录深度,最多能创建3层。
keys_zone=my_cache:10m:定义缓存区域名称和内存缓存空间大小。
max_size=10g:磁盘缓存空间最大使用值,达到配额后删除最少使用的缓存文件。
inactive=60m:设置缓存时间,60分钟内没有被访问过就删除。
use_temp_path=off:不使用temp_path指定的临时存储路径,直接将缓存文件写入指定的cache文件中,建议off。
proxy_cache my_cache:缓存区域名称,要和keys_zone定义的名称一致
proxy_cache_valid 200 302 304 60m:设置状态码为200 302 304过期时间为60分钟
proxy_cache_key $host$uri$is_args$args:设置缓存的key,这里是以域名、URI、参数组成web缓存的key值,根据key值哈希存储缓存内容到二级缓存目录内


expires3d:缓存时间3天

location ~ /purge(/.*) :用于手动清除缓存,allow表示只允许指定的IP才可以清除URL缓存
location ~ .*\.(jsp|php)?$:扩展名以jsp或php结尾的不做缓存


11、实践

缓存参数已经配置完成了,保存退出,nginx -t检查无误后,重启nginx

访问http://192.168.50.101/看到的内容就是我们在index.html所设置的内容

此时文件已经缓存到磁盘

ll /data/ngx_cache/a/ae/adfb876fc186a57f12a0b158220f9aea

接下来我们来清除缓存,只需要在清除缓存网页的URI地址前加上purge即可

http://192.168.50.101/purge/

此时可以看到刚刚缓存的内容已经被清除

再举个例子:

想要清除http://192.168.50.101/abc/123.html,就访问http://192.168.50.101/purge/abc/123.html