Nginx学习之缓存配置

项目采用的是Nginx+Tomcat,Nginx处理静态请求并缓存,Tomcat处理动态请求。

缓存配置proxy_cache.conf:

#设置Web缓存区名称为cache,内存缓存空间大小为200MB
#1天没有被访问的内容自动清除,硬盘缓存空间大小为10GB
#levels=1:2 表示缓存目录的第一级目录是1个字符,第二级目录是2个字符
#proxy_cache_key 设置缓存的key,以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
proxy_cache_path /home/cache levels=1:2 keys_zone=cache:200m inactive=1d  max_size=10g;
proxy_cache_valid  200 304 301 302 8h;
proxy_cache_valid  404 1m;
proxy_cache_key    $host$uri$is_args$args;


项目reprot.conf:

#报告
server {
        listen       80;
        server_name  report.52itstyle.com;
        access_log     /usr/local/nginx/logs/report.52itstyle.com.access.log access;
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|ico)?$ {
            expires      1d;#缓存时间
            proxy_cache cache;#设置资源缓存的zon
            add_header  Nginx-Cache "$upstream_cache_status";#显示缓存的状态
            proxy_pass      http://report;
        }
        location / {
              proxy_pass      http://report;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

}
upstream report {
         fair;
         server  172.16.1.120:8882 weight=1  max_fails=2 fail_timeout=30s;
         server  172.16.1.120:8881 weight=1  max_fails=2 fail_timeout=30s;
}

重启Nginx,清空浏览器缓存,刷新页面,F12 查看:

Cache-Control:max-age=86400
Connection:keep-alive
Content-Encoding:gzip
Content-Type:application/javascript
Date:Fri, 05 May 2017 08:21:22 GMT
Expires:Sat, 06 May 2017 08:21:22 GMT
Last-Modified:Thu, 27 Apr 2017 01:27:36 GMT
Nginx-Cache:HIT
Server:Tengine/2.1.1
Transfer-Encoding:chunked

$upstream_cache_status包含以下几种状态:

·MISS 未命中,请求被传送到后端
·HIT 缓存命中
·EXPIRED 缓存已经过期请求被传送到后端
·UPDATING 正在更新缓存,将使用旧的应答
·STALE 后端将得到过期的应答

查看Nginx进程,会有一个cache进程
123.png

qrcode_for_gh_bf7a27ade681_258.jpg

作者: 小柒

出处: https://blog.52itstyle.com

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。