环境:CentOS 6.9
WEB: Nginx 1.12
HOSTS: 192.168.1.123 proxy.21yunwei.com
BACK_SERVER(lnmp):192.168.1.122
一,安装nginx以及 添加ngx_cache_purge缓存模块
这里不介绍了,可以参考《linux下如何安装nginx环境配置》,但之前的文章没有加载purge缓存清理模块,所以要单独增加模块ngx_cache_purge。这个组件可以到http://labs.frickle.com/nginx_ngx_cache_purge/ 下载 。如 之前的nginx安装过,那么需要单独编译nginx添加组件才行。具体nginx增加扩展模块可以参考文章《原已经安装好的nginx如何查看已经安装模块和添加一个未被编译安装的模块》
我这里的测试环境是nginx编译过的,所以重新编译了nginx:
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz tar zxvf ngx_cache_purge-2.3.tar.gz cd ngx_cache_purge-2.3 cd /usr/local/src/nginx-1.12.0 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_image_filter_module --add-module=/usr/local/src/ngx_cache_purge-2.3 make mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/oldnginx cp ./objs/nginx /usr/local/nginx/sbin/ /usr/local/nginx/sbin/nginx -V /usr/local/nginx/sbin/nginx -s reload
二,web cache配置参数介绍。
nginx配置文件nginx.conf在http{}标签加入web缓存设置:
proxy_cache_path /cache_data/cache_dir levels=1:2 keys_zone=imgcache:2048m inactive=1d max_size=5g;
proxy_temp_path /cache_data/tempcache;
参数说明:
#proxy_cache_path:用于设置缓存的目录,后面跟缓存路径。最好将其放于iops高的磁盘,提升响应速度,因为这个是优先将缓存的内容放于内存当中的,如果超出 设置的内存值,将会置换存放于磁盘上边。
#levels=1:2:levels 用来设置目录深度,这里是两层目录深度, 第一层是一个字符,第二层是两个字符。
#keys_zone:用来设置 web 缓存区名称,这里是 imgcache,后面的”4096m“表示内存缓存空间大小为 2G,具体建议根据服务器参数进行配置。
#inactive:表示自动清除缓存文件的时间,这里的”1d“表示 1天没有被访问的内容自动清除,还可以使用分钟或小时计时,例如”5m“表示 5 分钟后自动清除,”5h“表示 5 小时后自动清除。
#max_size:表示硬盘缓存空间可使用的最大值,默认情况下经常访问的文件将被放到内存中进行缓存,而在内存缓存空间不足时,nginx 会将不经常访问的数据从内存写到磁盘.
#proxy_temp_path /cache_data/tempcache; #proxy_temp_path 用于指定临时缓存文件的存储路径,这里需要注意的是#proxy_temp_path 和 proxy_cache_path 指定的路径必须在同一磁盘分区
三,服务器参数配置并测试。
1,nginx主配置文件参数如下:
user nginx nginx;
worker_processes auto;
pid logs/nginx.pid;
worker_rlimit_nofile 100000;
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
upstream webnode {
server 192.168.1.122;
}
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
#php
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
client_body_buffer_size 512k;
#cache
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_disable "msie6";
gzip_proxied any;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
#nginx web cache
proxy_cache_path /cache_data/cache_dir levels=1:2 keys_zone=imgcache:2048m inactive=1d max_size=5g;
proxy_temp_path /cache_data/tempcache;
include ./vhost/*.conf;
}
2,具体测试站点配置文件proxy.21yunwei.com.conf:
server {
listen 80;
server_name proxy.21yunwei.com;
index index.php;
root /wwwroot/proxy;
#rewrite ^/(.*) http://www.21yunwei.com/$1 permanent;
location / {
proxy_cache imgcache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://webnode;
expires 1d;
}
location ~ .*.(php)(.*){
proxy_pass http://webnode;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ /purge(/.*) {
allow 192.168.0.135;
deny all;
proxy_cache_purge imgcache $host$1$is_args$args;
}
}
访问测试:http://proxy.21yunwei.com/index.html以及动态 phphttp://proxy.21yunwei.com/test.php效果

这个时候我们从当前的Nginx 反代服务器可以看到之前定义的缓存目录生成缓存文件:
[root@21yunwei_web_node123 cache_data]# tree . ├── cache_dir │ └── c │ └── 99 │ └── 3397e481c83bb221bd7a57e96ea9099c └── tempcache 4 directories, 1 file
其中3397e481c83bb221bd7a57e96ea9099c就是根据之前的hashkey生成的文件名,其中的内容无法直接通过cat等命令查看,可以通过strings命令查看内容。
四,如何清除指定的 URL 缓存
有的时候修改了网页内容,但是缓存还未过期,那么就需要清理web cache缓存了。
两种方式:
一是删除proxy_cache_path下的深度目录的缓存文件,只不过需要登录服务器或者工具 删除,不方便。
二是通过purge方式访问URL进行清理。比如我们修改index.html内容,加入hello 21yunwei进去,但是访问 的内容依旧是之前的,通过http://proxy.21yunwei.com/purge/index.html清理缓存,访问到最新内容:

转载请注明:西数超哥博客www.ysidc.top» Nginx作为Web CDN缓存服务器配置以及purge缓存清理操作
https://www.ysidc.top 西数超哥博客,数据库,西数超哥,虚拟主机,域名注册,域名,云服务器,云主机,云建站,ysidc.top








