51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Nginx配置缓存服务器及缓存清除

环境介绍:当前系统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

|-------|---------------------------------------------------------------------------------------------------------| | 1 2 3 | 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
wget http://nginx.org/download/nginx-1.14.0.tar.gz tar zxf nginx-1.14.0.tar.gz

|-----|--------------------------------------------------------------------------------| | 1 2 | wget http://nginx.org/download/nginx-1.14.0.tar.gz tar zxf nginx-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

|-----|------------------------------------------------------------------------------------------------------------| | 1 2 | 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

|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 | 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

|----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 | [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

|-----|----------------------------------------------| | 1 2 | systemctl start nginx systemctl enable nginx |

7、创建一个用于缓存的目录
mkdir -p /data/ngx_cache

|---|--------------------------| | 1 | mkdir -p /data/ngx_cache |

8、创建一个主页文件以便后续演示用
vi /data/index.html

|---|---------------------| | 1 | 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; } ...... } }

|----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 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 | 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。

|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | 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值哈希存储缓存内容到二级缓存目录内 expires 3d:缓存时间3天

|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 | 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值哈希存储缓存内容到二级缓存目录内 expires 3d:缓存时间3天 |


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

|-----|----------------------------------------------------------------------------------------------------------------| | 1 2 | 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

赞(0)
未经允许不得转载:工具盒子 » Nginx配置缓存服务器及缓存清除