我近期对服务器进行了少量改进,虽然之前使用了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. #英文#品读中国城市个性——最好的和最坏的&当东方遇到西方

    冒险家的乐园 a playground of risk 实现发财梦 realize one's dreams of wealth 道德沦丧,堕落 moral deprivation 租界 foreig ...

  2. 构建高性能的MYSQL数据库系统

    实验环境: DB1:172.16.1.100 DB2:172.16.1.101 VRRIP:172.16.1.99 步骤: yum -y install mysql 1.修改DB1的mysql配置文件 ...

  3. Linux系统学习优缺点

    Linux是一套操作系统,按照鸟哥的说法Linux提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭Unix良好的传统而来的,功能强大而且稳定性卓越.其实Torvalds ...

  4. Chrome一直提示“adobe flash player 因过期而遭阻止” ,如何解决?

    完全不用安装最新版的 Chrome,只需要将 Flash 组件安装一下最新版即可. 并且这里需要的不是网上随处可见的 NPAPI 版本,而是冷门的 PPAPI 版本. 请收藏好这个链接,是某位大牛从 ...

  5. ubuntu server 搭建自己的个人博客及其他网站

    一, 安装apache2服务器 sudo apt-get install apache2 二,安装mysql服务器 sudo apt-get install mysql-server 此时会提示输入M ...

  6. 创建WP8试用应用

    参考资料: 创建 Windows Phone 的试用应用 如何在 Windows Phone 应用中实现试用体验 Windows Phone 7 开发 31 日谈——第23日:提供试用版应用程序 对资 ...

  7. Python框架之Tornado(三)请求

    概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3 系列所有步骤,如上图[start]是一个死循环,其中利 ...

  8. C#输出文本树形层次,前或者后自定义空格位数

    Indent String with Spaces This example shows how to indent strings using method for padding in C#. T ...

  9. 了解vmware tools

    了解vmware tools vmware tools是虚拟机VMware Workstation自带的一款工具,它的作用就是使用户可以从物理主机直接往虚拟机里面拖文件.如果不安装它,我们是无法进行虚 ...

  10. 【SQL语句】update ... ... from ......

    要求:修改vaj表中的vaj02字段的值,vaj02字段的值=cag.cag03的值,vaj 表与 cag 表无直接关联 实现: update vaj set vaj02=c.cag03 from l ...