Nginx作为web缓存服务器
从0.7.48版本开始,Nginx支持类似Squid的缓存功能。Nginx的web缓存服务主要由proxy_cache相关命令集合fastcgi_cache相关命令集构成,前者用于反向代理时对后端内容源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存。此外,如果不想使用Nginx自带的缓存功能,也可使用第三方模块ngx_slowfs_cache来实现缓存服务器的配置。
- 在nginx下安装缓存服务器
这里使用Nginx自带的缓存模块,通过proxy命令来实现数据的缓存,所以在编译的时候要加上ngx_cache_purge模块,这个第三方模块是清理Nginx缓存的一个插件。
在网上下载ngx_cache_purge插件的最新版本,然后重新编译安装nginx。
./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.31 --add-module=/usr/local/src/ngx_cache_purge-2.3(文件解压后存放的位置)
- 配置Nginx缓存服务器
Nginx缓存服务器的配置主要通过proxy_cache相关命令来实现。
proxy_cache_path /backup/proxy_cache_dir levels=1:2 keys_zone=cache_one:4096m inactive=1d max_size=3g;
- poxy_cache_path:用于设置缓存的目录,后面跟缓存路径。最好将缓存目录放在一个独立的硬盘上。
- levels=1:2:levels用来设置目录深度,这里是两层目录深度,第一层是一个字符,第二层是两个字符。
- keys_zne:用来设置web缓存区名称,这里的cache_one后面的4096,表示内存缓存空间大小为4GB
- inactive:表示自动清除缓存文件的时间,这里的“d”表示1天没有被访问的内容自动清除,还可以使用分钟和小时计数,5m,5h。
- max_size:表示硬盘缓存空间可使用的最大值,默认情况下经访问的文件常将被放到内存中进行缓存,而在内存缓存空间不足时,Nginx会将不经常访问的数据从内存写到磁盘。
proxy_temp_path /backup/proxy_temp_dir;
- 用于指定临时缓存文件的存储路径,这里需要注意的是,两个存放缓存文件的目录必须在同一磁盘分区。
location / {
root html;
index index.html index.htm index.php;
proxy_cache cache_one; #反向代理缓存设置命令,语法为“proxy_cache zone|off“,默认为off,需要将proxy_cache命令放在location字段,这样匹配以此location的url才能被缓存。
proxy_cache_valid 200 304 12h; #对不懂HTTP状态码设置不同的缓存时间
proxy_cache_key $host$uri$is_args$args; #这个命令是设置以什么样的参数得到缓存的文件名,默认为”$scheme$proxy_host$request_uri”,表示以协议,主机名,请求uri(包括参数)做MD5得出缓存的文件名。这里以域名,URI,参数组合成Web缓存的key值,nginx会根据key哈希,存储缓存内容到二级缓存目录内
}
下面配置手动清除缓存策略:
location ~ /purge(/.*) {
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
这里设置可以清除缓存的ip和网段,下面说的是清除的内容
location ~ \.php?$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
以.php结尾的文件不用缓存
手动清除缓存的方法
http://192.168.1.120/index.html 访问
http://192.168.1.120/purge/index.html 清除缓存策略
t
- 验证我们的缓存服务是否成功启动
[root@Goun conf]# ps -ef | grep nginx
root 9390 1 0 20:52 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
www 9392 9390 0 20:52 ? 00:00:00 nginx: worker process
www 9393 9390 0 20:52 ? 00:00:00 nginx: cache manager process
进程nginx:cache manager process这个进程是用来管理缓存服务和文件的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:5.Nginx作为web缓存服务器 - Python技术站