Nginx实现静态资源的缓存
1.1 需求
1、对静态文件进行缓存:html,js,css,png,gif,jpg,jpeg,bmp,swf。
2、对符合url规则的请求进行缓存。
3、针对某个url进行清除缓存。
1.1 安装ngx_cache_purge
ngx_cache_purge是第三方开发的一个nginx模块,不包含在 Nginx 的源码发布版,它的作用是清理nginx缓存,对FastCGI、proxy、SCGI 和uWSGI缓存进行清除
第一步:把模块上传到服务器
第二步:重新编译nginx
第三步:解压ngx_cache_purge-2.3.tar.gz
第四步:重新编译nginx
1、进入nginx目录
2、重新设置编译参数
./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi --add-module=/usr/local/java/ngx_cache_purge-2.3 |
第五步:make
第六步:make
install
1.1 配置nginx缓存
http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream tomcat_server_pool{ server 192.168.25.148:8080 weight=10; server 192.168.25.148:8081 weight=10; #配置负载均衡的参数权重 } #proxy_temp_path代理临时目录 proxy_temp_path /var/temp/nginx/proxy; #proxy_cache_path代理缓存目录,和proxy_temp_path必须在同一个分区 #/var/temp/nginx/proxy_cache_dir缓存目录 #levels指定该缓存空间有两层hash目录,第一层目录名是1个字母或数字长度,第二层目录名为2个字母或数字长度 #keys_zone=cache_one:50m缓存区名称为cache_one,在内存中的空间是50M,inactive=1d表示1天清空一次缓存 ,max_size指定磁盘空间大小为500M proxy_cache_path /var/temp/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=500m; server { listen 80; server_name cache.test.com; #清空缓存配置,注意必须放在最上边,当在请求的url前加/purge/时将此url的缓存清空 location ~ /purge(/.*) { #安全设置,指定请求客户端的IP或IP段才可以清除URL缓存,这里为了方便测试设置为all #allow 127.0.0.1; allow all; #指定清空缓存的区域名称cache_one(要和上边proxy_cache_path缓存配置中指定的缓存区域名称一致) #指定缓存的key规则$host$1$is_args$args,要和下边设置缓存的key一致$host$uri$is_args$args #注意$host$1$is_args$args中的$1表示当前请求的uri,$host$1$is_args$args=$host$uri$is_args$args proxy_cache_purge cache_one $host$1$is_args$args; } #请求url以/item/开头的进行缓存,使用此location location ~ /item(/.*){ #指定缓存区域名称 proxy_cache cache_one; #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希 proxy_cache_key $host$uri$is_args$args; #请求头中添加请求的主机名 proxy_set_header Host $host; #请求头中添加真实的客户端ip,通过X-Forwarded-For可获取 proxy_set_header X-Forwarded-For $remote_addr; #代理访问后端tomcat #请求item从缓存中找,如果缓存中没有则向tomcat请求 #$1表示取出正则表达式(/.*)所匹配的内容,使用$1的效果例如请求http://ccc.test.com/item/100010.html则请求tomcat服务器 http://ip:port/100010.html #如果不使用$1则会将/item/...加在tomcat服务地址之后访问,即http://ip:port/item/100010.html proxy_pass http://tomcat_server_pool$1; } #请求url以.html、js、css、png、gif结尾和此location匹配成功 location ~ .*\.(html|js|css|png|gif|jpg|jpeg|bmp|swf)$ { #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到 upstream负载均衡池中的另一台服务器,实现故障转移。 proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_cache cache_one; #对不同的HTTP状态码设置不同的缓存时间 proxy_cache_valid 200 10m; proxy_cache_valid 304 1m; proxy_cache_valid 301 302 1h; proxy_cache_valid any 1m; #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希 proxy_cache_key $host$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; #如果没有缓存则通过proxy_pass转向tomcat请求 proxy_pass http://tomcat_server_pool; } #所有的location规则都不满足走/,使用proxy_pass将请求转发给tomcat location /{ proxy_pass http://tomcat_server_pool; index index.jsp index.html index.htm; } } } |
Nginx实现静态资源的缓存的更多相关文章
- nginx静态资源设置缓存的方法
nginx静态资源设置缓存的方法 直接加expires 30d; 就是就可以了 缓存时间30天完整如下 <pre> location / { root /home/www/wordpres ...
- Nginx作为静态资源web服务之缓存原理
Nginx作为静态资源web服务之缓存原理 大致理一下http浏览器缓存原理: 浏览器第一次请求服务器,此时浏览器肯定没有缓存,则直接调用服务器端,服务器在返回的信息的信息头中添加 ETag和Last ...
- Nginx针对前端静态资源的缓存处理
当用户上报一个线上的bug后,开发者修改前端代码的bug上新后,用户反映问题依旧存在的问题...这种情况是不是曾经遇到过,这个问题跟浏览器的缓存机制有很大关系(强制缓存和协商缓存,这里我就不介绍具体的 ...
- nginx处理静态资源的配置
修改nginx.conf文件,用于nginx处理静态资源. 主要配置如下(在server配置中加入location配置即可): server { listen 80; server_name 123. ...
- linux使用Nginx搭建静态资源服务器
最近公司需要做一个宣传片播放 视频有点大 好几百M 就想到使用Nginx来代理静态资源,在过程中出现了一些问题,比如端口没开.访问是403等,没有成功,后面慢慢查找问题,才发现大部分博客资料的都不全 ...
- nginx 配置静态资源路径(url不同于static path)
目的 用nginx做静态资源代理可以减少请求对后台服务器的压力,使响应更加迅速. 配置 情景一 url : 127.0.0.1:8000/images ...
- Nginx之静态资源WEB服务
本篇主要记录学习Nginx的静态资源WEB服务的几种常见的功能记录学习 Nginx开发常用的命令 nginx -tc /etc/nginx/nginx.conf vim /etc/nginx/conf ...
- nginx发布静态资源
nginx发布静态资源 参考 ngx_http_index_module index指令 ngx_http_core_module http指令 location指令 listen指令 root指令 ...
- nginx/apache静态资源跨域访问问题详解
1. apache静态资源跨域访问 找到apache配置文件httpd.conf 找到这行 #LoadModule headers_module modules/mod_headers.so把#注释符 ...
随机推荐
- BZOJ2243 (树链剖分+线段树)
Problem 染色(BZOJ2243) 题目大意 给定一颗树,每个节点上有一种颜色. 要求支持两种操作: 操作1:将a->b上所有点染成一种颜色. 操作2:询问a->b上的颜色段数量. ...
- 在KCloud上轻松“玩转”Docker
继CoreOS和Atomic镜像上线之后,刻通云紧跟Docker技术发展脚步,近期又推出了Ubuntu Core镜像,成为国内首家支持Ubuntu Core镜像的基础云服务商,同时也是国内唯一一家同时 ...
- editplus 常用快捷键汇总 大小写代码折叠
文本类 新建普通文本:Ctrl+N新建浏览器窗口:Ctrl+Shift+B新建HTML页:Ctrl+Shift+N打开:Ctrl+O打开一个现有的文档文件结尾:Ctrl+End选区扩展到文档结尾处:C ...
- MySQL Cluster在线备份和恢复
备份方式 一般MySQL数据库都是用mysqldump命令进行数据备份,其生成的文件实际上是创建对象和导入对象的sql语句. 在MySQL Cluster集群上,可以在管理节点上使用start bac ...
- 最小二乘法 python实现
#-*-coding:UTF-8-*- # Created on 2015年10月20日 # @author: hanahimi import numpy as np import random im ...
- tyvj1014 - 乘法游戏 ——记忆化搜索DP
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1014 f[i][j]表示区间[i,j]所得到的最小值. 不断地划分区间,把结果保存起来. #includ ...
- Codeforces Round #137 (Div. 2)
A. Shooshuns and Sequence 显然\([k,n]\)之间所有数均要相同,为了求最少步数,即最多模拟\(n\)次操作即可. B. Cosmic Tables 映射\(x_i,y_i ...
- STL概述
一.关于STL STL(Standard Template Library,标准模板库)是C++语言标准中的重要组成部分.STL 以模板类和模板函数的形式为程序员提供了各种数据结构和算法的精巧实现,程 ...
- POJ1087 A Plug for UNIX(网络流)
A Plug for UNIX Time Limit: 1000MS Memory Limit: 65536K Total S ...
- 26 个 jQuery使用技巧
1. 禁用右键点击(Disable right-click) $(document).ready(function(){ $(document).bind("contextmenu" ...