一、基于nginx实现高速缓存
1.基于Nginx 静态缓存的解决方案
2.实现方式
- 参数说明
父元素 | 名称 | 描述 |
---|---|---|
http | proxy_cache_pat | 指定缓存区的根 |
levels | 缓存目录层级最高三层,每层1~2个字符表示。如1:1:2 表示三层。 | |
keys_zone | 缓存块名称 及内存块大小。如cache_item:500m 。表示声明一个名为cache_item 大小为500m。超出大小后最早的数据将会被清除。 | |
inactive | 最长闲置时间 如:10d 如果一个数据被闲置10天将会被清除 | |
max_size | 缓存区硬盘最大值。超出闲置数据将会被清除 | |
location | proxy_cach | 指定缓存区,对应keys_zone 中设置的值 |
proxy_cache_key | 通过参数拼装缓存key 如:$host $uri $is_args $args 则会以全路径md5值做做为Key | |
proxy_cache_vali | 为不同的状态码设置缓存有 |
- 在http元素下添加缓存区声明
proxy_cache_path /data/nginx/cache_item levels=1:1:2 keys_zone=cache_item:500m
inactive=30d max_size=10g;//修改此处需要停止服务后重启
- 为指定location 设定缓存策略
location ~ \.(html)${
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr
proxy_cache cache_item;
proxy_cache_key $host$uri$is_args$args;#以全路径md5值做做为Key
proxy_cache_valid 200 304 12h; #对不同的HTTP状态码设置不同的缓存时间
expires 7d; #总体缓存时间
}
- 清空缓存,该功能可以采用第三方模块
ngx_cache_purge
实现 - #下载
ngx_cache_purge
模块包 ,这⾥nginx
版本为1.6.2 purge
对应2.0
版
wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz
- 清除配置
location ~ /purge(/.*) {
#允许访问的IP
allow 127.0.0.1;
allow 192.168.0.193;
#禁⽌访问的IP
deny all;
#配置清除指定缓存区和路径(与proxy_cache_key⼀⾄)
proxy_cache_purge cache_item $host$1$is_args$args;
}
二、Nginx 实现子域名站点配置
有时会有这样的需求,每个子域名对应一个静态站点(类似58到家、有赞商城等)。如果每天增加一个域名
的会相当麻烦。在nginx 当中可直接基于$host 连接到对应目录。具体配置实现如下:
server {
listen 80;
server_name *.tl.com;
root /data/www/$host;
access_log logs/$host.access.log;
location / {
index index.html;
}