HappyAA服务器部署笔记2(nginx的静态资源缓存配置)

我近期对服务器进行了少量改进,虽然之前使用了nginx反向代理之后性能有所提高,但仍然不够,需要使用缓存来大幅度提高静态资源的访问速度.

服务器上的静态资源主要有这些:png, jpg, svg, js, css等.下面,我通过新的nginx配置来实现缓存.对红色的字我会额外进行说明.

worker_processes  1;

events {
    worker_connections  1024;
    multi_accept        on;
    use                 epoll;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    proxy_cache_path /svcwork/nginxcache levels=1:2 keys_zone=staticcache:10m inactive=1h max_size=2g;
    server {
        listen               80;
        server_name          localhost;
        location / {
             proxy_set_header Host $host;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header X-Forwarded-Proto $scheme;
             proxy_pass http://localhost:8080/;
        }
        location ^~ /resource {
             alias /resource;
             expires 1h;
        }
        location ^~ /hpaasvc {
             rewrite ^(.*)$ https://$host$1 permanent;
        }
        location ~* \.(js|css|ico|gif|jpg|png|svg)$ {
            log_not_found off;
            access_log off;
            expires 7d;
            proxy_pass http://localhost:8080;
            proxy_cache staticcache;
            proxy_cache_valid any 10m;
        }
    }
    server {
        listen               443 ssl;
        server_name          localhost;
        ssl_certificate      cert/cert.pem;
        ssl_certificate_key  cert/cert.key;
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  10m;
        ssl_ciphers          HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://localhost:8080/;
        }
        location ^~ /resource {
             alias /resource;
             expires 1h;
        }
        location ~* \.(js|css|ico|gif|jpg|png|svg)$ {
             log_not_found off;
             access_log off;
             expires 7d;
             proxy_pass http://localhost:8080;
             proxy_cache staticcache;
             proxy_cache_valid any 10m;
        }
    }
}

1, "multi_accept on"和"use epoll"可以提高服务器吞吐量

2, "proxy_cache_path /svcwork/nginxcache levels=1:2 keys_zone=staticcache:10m inactive=1h max_size=2g;"配置了一个服务器缓存,被缓存的服务器响应(不一定是文件,也有可能是302,304之类的响应)存放在/svcwork/nginxcache目录下;而且将根据被缓存响应的md5摘要信息创建两级目录(一般来说一个目录下存放过多的文件会导致文件系统访问性能的下降);缓存的名字叫staticcache,后面会用到这个名字;缓存使用10M内存(我看别人的范例上是100M,所以一开始我也配置了100M,但发现内存不足,nginx报错,所以就改小了许多);如果没有新的动作,被缓存的响应的将会在1个小时候被删除;缓存区最多可使用2G的磁盘空间.

3, location后面加上"^~"表示一旦匹配的话将不会匹配正则表达式. 如果用户要访问的URI是"/resource/test/abc.png",那么将使用"location ^~ /resource"规则,忽略掉后面的正则表达式匹配.

4, access_log off; 其实我觉得access_log意义不大.

5, expires 7d;这玩意儿其实是客户端缓存,通过http头告诉浏览器这个访问的资源的有效期是7天,7天内可以别再向服务器要,但这个取决于浏览器的具体实现,如IE按<F5>,就会强制向服务器刷新所有资源而不管是否有缓存.

6, proxy_cache staticcache;指定要使用的缓存.嗯,就是前面定义的那个staticcache.

7, proxy_cache_valid any 10m;10分钟后访问的数据将会"变不新鲜"...怎么说呢?举个栗子: /website/image/abc.png被首次访问的话讲会被缓存,接下去10分钟里对这个资源的访问都直接从缓存返回而不会将请求pass到后台.10分钟后再重新尝试从后台拿. 注意一下跟"proxy_cache_path"的"inactive"的差别,inactive是说缓存的响应的"生命时间",每次访问这个资源都将刷新缓存的"生命时间",让它继续活在缓存中,而这里则表示隔了这么长时间就重新刷新下这个被缓存的响应.

本文写得有点仓促潦草,有问题再说了...

时间: 2024-10-10 06:22:47

HappyAA服务器部署笔记2(nginx的静态资源缓存配置)的相关文章

HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)

这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计应该是这样的:) 概述与设计 nginx安装 nginx基本使用 nginx的配置 tomcat的安装与配置 部署程序 待续 概述与设计 主机使用阿里云主机,配置不高,但前期应该够用,以后有需要的话再升级. 主要的业务逻辑是用java实现,并用tomcat承载,但大家知道tomcat并不适合作为大量的静态资源

linux使用Nginx搭建静态资源服务器

最近公司需要做一个宣传片播放  视频有点大 好几百M 就想到使用Nginx来代理静态资源,在过程中出现了一些问题,比如端口没开.访问是403等,没有成功,后面慢慢查找问题,才发现大部分博客资料的都不全,所以在这里记录一下. 安装过程本文就不提了 网上都有很多 本文主要说明 nginx.conf 的配置 如下: 进入编辑nginx.conf 文件 输入密码 配置nginx.conf 上传文件到配置的路径 在网页地址栏输入对应的地址 如果出现 nginx静态资源文件无法访问,403 forbidde

清除nginx静态资源缓存

之前写过一篇如何配置nginx缓存及手动清除缓存的文章: http://www.cnblogs.com/Eivll0m/p/4921829.html 但如果有大量缓存需要清理,手动一条条清理就比较慢了,所以写了个小脚本进行清理,脚本如下: #!/usr/bin/env python # -*- coding: UTF-8 -*- # data:2015-12-08 # author:eivll0m # 脚本用途:清除nginx静态资源缓存 # 使用方法:将要清楚缓存的url粘贴到/app/adm

Nginx配置静态资源缓存时间及实现防盗链

环境源主机:192.168.10.158系统:centos 7.4域名:www.wuxier.cn盗链主机:192.168.10.191(使用Nginx+Tomcat实现负载均衡.动静分离的实验主机,点我进行复盘)系统:centos 7.4域名:www.ajie.com 和 www.taobao.com 创建软件包存放目录 [[email protected] ~]# mkdir /root/software [[email protected] ~]# cd /root/software/ [

nginx发布静态资源

nginx发布静态资源 参考 ngx_http_index_module index指令 ngx_http_core_module http指令 location指令 listen指令 root指令 server指令 server_name指令 步骤 创建静态资源 为 conf/nginx.conf http模块中新增server模块 静态资源结构 E:\mozq\00store\frxx ├─frxx │ bug.png │ weixin.png server模块配置 server{ list

变态的静态资源缓存与更新

这是一个非常有趣的 非主流前端领域,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中. 在我的印象中,facebook是这个领域的鼻祖,有兴趣.有梯子的同学可以去看看facebook的页面源代码,体会一下什么叫工程化. 接下来,我想从原理展开讲述,多图,较长,希望能有耐心看完. 让我们返璞归真,从原始的前端开发讲起.上图是一个"可爱"的index.html页面和它的样式文件a.css,用文本编辑器写代码,无需编译,本地预览,确认OK,丢到服

SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径

Springboot 再模板引擎中引入Js等文件,出现服务器拒绝访问的错误,需要配置过滤器 静态资源访问配置 @Configuration @EnableWebMvc public class StaticResourceConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHand

SpringMVC REST 风格静态资源访问配置

1 在web.xml中使用默认servlet处理静态资源,缺点是如果静态资源过多,则配置量会比较大,一旦有遗漏,则会造成资源无法正常显示或404错误. <!-- 静态资源访问控制 --> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-

.htaccess设置静态资源缓存(即浏览器缓存)

在HTTP标头中为静态资源设置过期日期或最长存在时间,可指示浏览器从本地磁盘中加载以前下载的资源,而不是通过网络加载.这样, 网站加载速度会更快. 下面的代码都需要放到.htaccess中才能生效. 推荐设置过期时间为一个月, 即: max-age=2592000. 通过FilesMatch设置 <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|css|js)$">Header set Cache-Control "max-a