nginx反向代理+页面缓存

在一次cdn排错过程中,发现可以利用nginx的页面缓存功能+dnspod来自己搭建cdn,来节省一定的成本,当然效果不如第三方的cdn效果好。因此自己先搭建了nginx页面缓存来测试一下。

先介绍下页面缓存用到的几个主要命令:

proxy_cache_path 设置缓存的目录

proxy_cache_key 设置以什么参数md5得到缓存的文件名,默认为$scheme$proxy_host$request _uri,即以协议,主机名,请求uri作md5得出缓存的文件名 

proxy_cache 反向代理缓存设置命令,语法proxy_cache zone |off

proxy_cache_valid 设置指定状态码的缓存时间


缓存变量说明:

$server_addr 服务器地址,在完成一次系统调用后,可以确定缓存服务器的地址

$upstream_cache_status 缓存是否命中

MISS 未命中

EXPIReD - expired 请求被传送到后端

UPDATGING - expired 由于proxy/fastcgi_cache_use_stale正在更新,将使用旧的应答

STALE - expired 由于proxy/fastcgi_cache_use_stale正在更新,后端将得到过期的应答

HIT 命中

架构:172.16.8.102   nginx做前端的反向代理+页面缓存  apache做后端web


1.mkdir -p  /data/nginx/cache/webserver

2.vim /etc/nginx//conf.d/ogzq.conf

proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g;
proxy_cache_key  "$host$request_uri";
server {
   listen       80;
   server_name  172.16.8.102;
   #proxy_set_header  Host $host;
   #proxy_set_header  X-Real-IP  $remote_addr;
   add_header X-Via $server_addr;
   add_header X-Cache $upstream_cache_status;

   location / {
        proxy_pass  http://ogzq;
        proxy_cache webserver;
        proxy_cache_valid 200 10m;
    }
}

以上是缓存匹配到/的文件,若只是缓存图片等静态内容,则配置如下

location ~* ^.+\.(js|ico|gif|jpg|jpeg|png|html|htm)$  {

proxy_pass  http://ogzq;

proxy_cache webserver;

        proxy_cache_valid 200 10m;

}

location配置详解请具体详看

3.vim /etc/nginx/conf.d/up.conf

upstream ogzq{
        server 127.0.0.1:81;
}


4.service nginx reload


效果如下:


用chrome浏览器打开网页,然后F12可以看到调试信息,红框处可以看出:所请求的Preloader.html?33已经命中缓存,同样可以查看其他请求内容有没有命中缓存。

ps:1.我们还可以设定请求图片如jpg,png,css,php,jsp等内容进行相对应的缓存,如我们架cdn就可以指定相应的图片进行缓存,以上只介绍主要的参数,还可以根据实际情况进行配置。

2.我们还可以设置日志格式,来判断缓存是否命中。

 log_format cache '***$time_local '  '***$upstream_cache_status ' 

 '***Cache-Control: $upstream_http_cache_control '

'***Expires: $upstream_http_expires ' '***"$request" ($status) ' '***"$http_user_agent" ';




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值