我近期对服务器进行了少量改进,虽然之前使用了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是说缓存的响应的"生命时间",每次访问这个资源都将刷新缓存的"生命时间",让它继续活在缓存中,而这里则表示隔了这么长时间就重新刷新下这个被缓存的响应.

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

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

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

    这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计 ...

  2. 关于linux下部署JavaWeb项目,nginx负责静态资源访问,tomcat负责处理动态请求的nginx配置

    1.项目的运行环境 linux版本 [root@localhost ~]# cat /proc/version Linux version -.el6.x86_64 (mockbuild@x86-.b ...

  3. nginx处理静态资源的配置

    修改nginx.conf文件,用于nginx处理静态资源. 主要配置如下(在server配置中加入location配置即可): server { listen 80; server_name 123. ...

  4. Nginx 静态资源缓存配置

    示例 # Media: images, icons, video, audio, HTC location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|m ...

  5. Nginx的静态资源缓存以及压缩

    Nginx是一款轻量级的网页服务器.反向代理器以及电子邮件代理服务器.Nginx采用的是异步非阻塞的通信机制(epoll模型),支持更大的并发连接.所谓的epoll模型:当事件没有准备好时,就放入ep ...

  6. nginx 作为静态资源web服务

    Nginx作为静态资源web服务 静态资源web服务-CDN场景 Nginx资源存储中心会把静态资源分发给“北京Nginx”,“湖南Nginx”,“山东Nginx”. 然后北京User发送静态资源请求 ...

  7. 云服务器部署Python项目(nginx+uwsgi+mysql+项目)

    python项目部署到云服务器 关注公众号"轻松学编程"了解更多. 一.硬件准备 云服务器,系统ubuntu_16_04 . 注意:要在安全组中开放Http的80端口. 二.软件准 ...

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

    最近公司需要做一个宣传片播放  视频有点大 好几百M 就想到使用Nginx来代理静态资源,在过程中出现了一些问题,比如端口没开.访问是403等,没有成功,后面慢慢查找问题,才发现大部分博客资料的都不全 ...

  9. 二.Nginx反向代理和静态资源服务配置

    2018年03月31日 10:30:12 麦洛_ 阅读数:1362更多 所属专栏: nginx   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/M ...

随机推荐

  1. PostgreSQL中标准的SQL boolean数据类型

  2. racket

    let 和 let* 区别 ``` racket // 这是对的 (let* ([x (random 4)][o (random 4)] [diff (number->string (abs ( ...

  3. 号称21世纪的编辑器Atom

    上个月无意中在一篇软文中看到一篇前端排行榜,其中有一项排行就是编辑器,而排在前三的编辑器分别是sublime.Atom.webstorm.出于好奇,简单的在网上查看了介绍,原来全球最大开源分享网站gi ...

  4. TOP 和 OFFSET 筛选(转)

    SQL Server 对行数的排序提供了 TOP 筛选.SQL Server 2012 新增了 OFFSET 筛选. 一.TOP 筛选 如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回 ...

  5. VS自定义项目模板:[2]创建VSIX项目模板扩展

    VS自定义项目模板:[2]创建VSIX项目模板扩展 听语音 | 浏览:1237 | 更新:2015-01-02 09:21 | 标签:软件开发 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师 ...

  6. 从vue1.0到vue2.0遇到的一些问题的记录

    1.取消v-el的使用方式,改为refs使用 获取指定的dom元素 html:<div ref="div"></div> js: $refs.div 问题: ...

  7. unix shell命令

    man  commandxx    查看某个命令的使用说明 权限---------------------- chmod o+wx   testfile  给某个目录权限 chmod 777 READ ...

  8. 测试...外部指针访问private

    #include<iostream> using namespace std; class A{ public: int* getPointer(){ return &m; } v ...

  9. JavaFX 教程资料收集

    1. JavaFX中文资料 http://www.javafxchina.net/blog/docs/tutorial1/ 2. JavaFX入门教程 http://www.xrpmoon.com/c ...

  10. 我对 Java 标识符的分类命名方法

    我对 Java 的各种标识符有一套固定的分类方法,以下分享一下我的命名方法以及进行一些说明. # 前缀: 方法 方法:f_doSomeThing().分类词是 f,采自 [f]unction 方法,也 ...