nginx添加proxy_cache模块做缓存服务器

业务需求nginx对后端tomcat(静态文件)做缓存 减轻后端服务器的压力

# nginx-1.6.2.tar.gz  ngx_cache_purge-2.3.tar.gz

#编译安装

./configure --add-module=../ngx_cache_purge-2.3 --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module

make && make install

#安装ngx_cache_purge后 必须重启nginx才能生效(reload无效 报错 unknown directive "proxy_cache_purge")

1 #定义缓存目录
2 proxy_temp_path   /data/proxy_temp_dir;
3     proxy_cache_path  /data/proxy_cache_dir  levels=1:2   keys_zone=cache_one:200m inactive=1d max_size=30g;
 1 #虚拟主机中配置 student.conf
 2
 3 server {
 4         listen 80;
 5         server_name student.metasequoia.com;
 6
 7         access_log /var/log/nginx/student_access.log cache;
 8         error_log /var/log/nginx/student_error.log ;
 9
10         location ~ /purge(/.*) #(测试 必须写在location上面 否则刷新不成功 why)
11         {
12             allow ip;#(写成127.0.0.1时 测试不生效 why)(所以写成主机ip)
13             deny all;
14             proxy_cache_purge cache_one $host$1$is_args$args;
15         }
16
17         location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|js|css)$ {
18             proxy_cache cache_one;
19             proxy_cache_valid  200 304 12h;
20             proxy_cache_key $host$uri$is_args$args;
21             #expires 30d;
22             add_header X-Cache $upstream_cache_status;
23
24             include /usr/local/nginx/vhost/proxy.configure;
25             proxy_pass http://student_server;
26         }
27
28         location / {
29             include /usr/local/nginx/vhost/proxy.configure;
30             proxy_pass http://student_server;
31         }
32
33             
1 #定义日志
2 log_format  cache   ‘$remote_addr [$time_local] "$request" ‘
3                         ‘"$upstream_status" $body_bytes_sent "$http_referer" ‘
4                         ‘"$http_user_agent" ‘
5                         ‘"$upstream_addr" "$upstream_response_time" $upstream_cache_status‘; #$upstream_cache_status 定义浏览器中的缓存状态 HIT MISS EXPIRED

#example

http://student.metasequoia.com/resource/images/login13.png

清除缓存

curl student.fclassroom.com/purge/resource/images/login13.png

时间: 2024-10-08 23:54:37

nginx添加proxy_cache模块做缓存服务器的相关文章

Nginx专题: upstream模块和缓存的简单使用

Nginx专题: upstream模块和缓存的简单使用 前言: 本文接着上篇Nginx专题: 从编译安装到URL重写来介绍Nginx的负载均衡模块使用方法, 本文的实验没有考虑大多数情况, 例如两个web服务器之间的数据同步等, 主要写Nginx如何作为负载均衡器使用并且缓存 实验拓扑 实验环境 主机 IP地址 功用 lb.anyisalin.com 172.16.1.2 负载均衡并缓存静态资源 web1.anyisalin.com 172.16.1.3 提供web服务 web2.anyisal

nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

geo指令使用ngx_http_geo_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module.ngx_http_geo_module模块可以用来创建变量,其值依赖于客户端IP地址.geo指令语法: geo [$address] $variable { ... }默认值: -配置段: http定义从指定的变量获取客户端的IP地址.默认情况下,nginx从$remote_addr变量取得客户端IP地址,但也可以从其他变量获得.例

利用memcached做缓存服务器,为后端tomcat服务器做会话保持,利用httpd的jk模块模块做负载均衡

前端使用httpd作为反代负载均衡至后端tomcat主机:tomcat可用memcached当做会话服务器保存会话: 实验环境:物理机win7,虚拟机centos7 node1:172.18.11.111 TomcatA node2:172.18.11.112 TomcatB node3:172.18.11.113 调度器httpd 安装tomcat 分别在node1和node2安装tomcat: ]# yum -y install java-1.7.0-openjdk java-1.7.0-o

【 Nginx 】proxy_cache 模块的使用记录

部署环境:nginx + tomcat  同一台服务器. 通过nginx反向代理tomcat. 配置如下: user www www; worker_processes auto; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; worker_rlimit_nofile 65535; events { use epoll;

安装nginx并为nginx添加sysguard模块

如果nginx被攻击或者访问量突然变大,nginx会因为负载变高或者内存不够用导致服务器宕机,最终导致站点无法访问.解决方法是利用淘宝开发的模块nginx-http-sysguard,主要用于当负载和内存达到一定的阀值之时,会执行相应的动作,比如直接返回503,504或者其他的.一直等到内存或者负载回到阀值的范围内,站点恢复可用.简单的说,这个模块是让nginx有个缓冲时间. 我使用的操作系统是Ubuntu12.0.4,下面的操作都以该系统为基础. 首先到官网上下载nginx1.12.1.tar

nginx添加sticky模块-cookie保持会话

cookie不同于session,一个存于客户端,一个存于服务端. 环境nginx 1.8.0 centos6.X sticky:1.2.5  wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz cookie负载均衡相比iphash来比其中一个特点比较明显:内网nat用户的均衡.而iphash无法做到. yum install openssl openssl-devel 先停止ngin

nginx添加 nginx_heath模块

原因?为什么会使用nginx_heath 这个模块,主要是如nginx+tomcat部署的时,tomcat挂了之后nginx->upstream 轮询是可以踢掉挂掉的tomcat服务的,如果部署的机器挂了之后nginx轮询是不能踢掉的,如果服务再去请求,就会出现请求超时! 1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.org/cn/docs/http/ngx_http_proxy_modul

如何给在用的nginx添加新模块?

有一个在用的nginx,以yum方法安装的,怎样在不改动配置的情况下,为它添加模块. 以添加spdy模块为例. 编译新模块 预编译 ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx.pid --error-log-path=/var/log/nginx/error.log --with-http_spdy_module --wi

nginx添加ssl模块

原已经安装好的nginx,现在需要添加一个未被编译安装的ssl模块: nginx -V 可以查看原来编译时都带了哪些参数 原来的参数:--prefix=/app/nginx 添加的参数: --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module 步骤如下: 1. 使用参数重新配置: ./configure --prefix=/app/nginx -user=nobody -group=nobod