21.Nginx代理缓存

1.环境准备

操作系统 应用服务 外网地址 内网地址
CentOS7.6 LB01 10.0.0.5 172.16.1.5
CentOS7.6 Web01 10.0.0.7 172.16.1.7

2.web01操作

2.1建立相关目录
[[email protected] ~]# mkdir -p /soft/code{1..3}

2.2建立相关html文件
[[email protected] ~]# for i in {1..3};do echo Code1-Url$i > /soft/code1/url$i.html;done
[[email protected] ~]# for i in {1..3};do echo Code2-Url$i > /soft/code2/url$i.html;done
[[email protected] ~]# for i in {1..3};do echo Code3-Url$i > /soft/code3/url$i.html;done

2.3配置Nginx
[[email protected] conf.d]# cat node.conf
server {
    listen 8081;
    server_name web.cheng.com;
    root /soft/code1;
    index index.html;
}

server {
    listen 8082;
    server_name web.cheng.com;
    root /soft/code2;
    index index.html;
}

server {
    listen 8083;
    server_name web.cheng.com;
    root /soft/code3;
    index index.html;
}

2.4检查端口是否开启
[[email protected] conf.d]# netstat -lntup
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      1597/nginx: master
tcp        0      0 0.0.0.0:8082            0.0.0.0:*               LISTEN      1597/nginx: master
tcp        0      0 0.0.0.0:8083            0.0.0.0:*               LISTEN      1597/nginx: master  

3.LB01配置代理缓存

-------->配置详解:
proxy_cache     存放缓存临时文件
levels          按照两层目录分级
keys_zone       开辟空间名, 10m:开辟空间大小, 1m可存放8000key
max_size        控制最大大小, 超过后Nginx会启用淘汰规则
inactive        60分钟没有被访问缓存会被清理
use_temp_path   临时文件, 会影响性能, 建议关闭

[[email protected] conf.d]# cat proxy_cache.conf
proxy_cache_path /soft/cache levels=1:2 keys_zone=code_cache:10m max_size=10g inactive=60m use_temp_path=off;

upstream cache {
    server 172.16.1.7:8081;
    server 172.16.1.7:8082;
    server 172.16.1.7:8083;
}

server {
    listen 80;
    server_name 10.0.0.5;
    index index.html;

    location / {
        proxy_pass http://cache;
                proxy_cache code_cache;
                proxy_cache_valid 200 304 12h;
                proxy_cache_valid any 10m;
                add_header Nginx-Cache "$upstream_cache_status";
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503  http_504;
                include proxy_params;

    }
}

------------------------------------------------------------------------------
proxy_cache             开启缓存
proxy_cache_valid       状态码200|304的过期为12h, 其余状态码10分钟过期
proxy_cache_key         缓存key
add_header              增加头信息, 观察客户端respoce是否命中
proxy_next_upstream     出现502-504或错误, 会跳过此台服务器访问下台

4.LB01通过浏览器测试

1.第一次访问没有命中;

2.第二次访问命中;

[[email protected] conf.d]# tree /soft/cache/
/soft/cache/
├── 7
│   └── 06
│       └── 289114bc31bdbeab995daebbcd107067
├── 8
│   └── c5
│       └── b39aea32bccf0c3e468f726ae9c75c58
└── d
    └── f1
        └── 002e95b5414ffb82dacc2e914ee3df1d

5.清理proxy_cache代理的缓存

方式一:使用rm删除已缓存数据

[[email protected] cache]# rm -rf /soft/cache/*
[[email protected] cache]# curl -s -I http://10.0.0.5/url1.html |grep "Nginx-Cache"
Nginx-Cache: MISS

方式二:使用ngx_cache_purge扩展模块清理, 需要编译安装Nginx

1.创建对应的目录
[[email protected] ~]# mkdir /soft/src && cd /soft/src/
2.上传nginx源码包
[[email protected] src]# rz nginx-1.16.1.tar.gz
[[email protected] src]# tar xf nginx-1.16.1.tar.gz
3.下载ngx_cache_purge模块
[[email protected] ~]# wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
[[email protected] ~]# tar xf ngx_cache_purge-2.3.tar.gz
4.编译Nginx
[[email protected] nginx-1.12.2]# yum -y install pcre-devel openssl openssl-devel
[[email protected] ~]# cd /soft/src/nginx-1.12.2/
[[email protected] nginx-1.12.2]# ./configure --prefix=/server/nginx --add-module=/root/ngx_cache_purge-2.3 --with-http_stub_status_module --with-http_ssl_module
[[email protected] ~]# make && make install

5.停掉之前的nginx
[[email protected] nginx-1.12.2]# cd /server/
[[email protected] server]# systemctl stop nginx

6.拷贝文件至
[[email protected] ~]# cp /etc/nginx/conf.d/proxy_cache.conf /server/nginx/conf/conf.d/
[[email protected] conf.d]# scp -rp /etc/nginx/conf.d/node.conf [email protected]:/server/nginx/conf.d/

[[email protected] conf]# vim nginx.conf     注释掉server相关的配置
在注释掉的server之上新增   include conf.d/*.conf;

[[email protected] conf]# cp /etc/nginx/proxy_params /server/nginx/conf/proxy_params
[[email protected] conf]# /server/nginx/sbin/nginx -t
[[email protected] conf.d]# /server/nginx/sbin/nginx
[[email protected] conf.d]# /server/nginx/sbin/nginx -s reload

[[email protected] conf.d]# netstat -lntup
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      24583/nginx: master
tcp        0      0 0.0.0.0:8082            0.0.0.0:*               LISTEN      24583/nginx: master
tcp        0      0 0.0.0.0:8083            0.0.0.0:*               LISTEN      24583/nginx: master 

[[email protected] conf.d]# rm -rf /soft/cache/*

编写配置文件
[[email protected] conf.d]# vim proxy_cache.conf

[[email protected] conf.d]# /server/nginx/sbin/nginx -t
[[email protected] conf.d]# /server/nginx/sbin/nginx -s reload
7.使用浏览器访问建立缓存
8.通过访问purge/url地址,删除对应的缓存
9.再次刷新就会因为缓存内容已清理,而出现404错误

6.配置指定的页面不缓存

[[email protected] conf.d]# cat proxy_cache.conf
proxy_cache_path /soft/cache levels=1:2 keys_zone=code_cache:10m max_size=10g inactive=60m use_temp_path=off;

upstream cache {
    server 172.16.1.7:8081;
    server 172.16.1.7:8082;
    server 172.16.1.7:8083;
}

server {
    listen 80;
    server_name 10.0.0.5;
    index index.html;

    if ($request_uri ~ ^/(url3|login|register|password)) {
        set $nocache 1;
    }

    location / {
        proxy_pass http://cache;
                proxy_cache code_cache;
                proxy_cache_valid 200 304 12h;
                proxy_cache_valid any 10m;
                add_header Nginx-Cache "$upstream_cache_status";
        proxy_no_cache $nocache $arg_nocache $arg_comment;  #不缓存变量为nocache
            proxy_no_cache $http_pargma $http_authorization;    #不缓存http参数以及http认证
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503  http_504;
                include proxy_params;

    }

    location ~ /purge(/.*) {
        allow   127.0.0.1;
        allow   10.0.0.0/24;
        deny    all;
        proxy_cache_purge code_cache $host$1$is_args$args;
        }
}

提前先清理缓存
[[email protected] conf.d]# rm -rf /soft/cache/*

无论如何请求url3都无法命中
[[email protected] conf.d]# curl -s -I http://10.0.0.5/url3.html|grep "Nginx-Cache"
Nginx-Cache: MISS
[[email protected] conf.d]# curl -s -I http://10.0.0.5/url3.html|grep "Nginx-Cache"
Nginx-Cache: MISS
[[email protected] conf.d]# curl -s -I http://10.0.0.5/url3.html|grep "Nginx-Cache"
Nginx-Cache: MISS

7.配置缓存日志记录

  1. 修改nginx的log_format格式,增加"$upstream_cache_status"c
[[email protected] conf.d]# vim /etc/nginx/nginx.conf
 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"' '"$upstream_cache_status"';

    access_log  /var/log/nginx/access.log  main;
  1. 在server标签中添加对应的access日志
server {
    ...
    access_log /var/log/nginx/proxy_cache.log main;
    ...
}
  1. 通过浏览器访问, 最后检查日志命令情况

原文地址:https://www.cnblogs.com/yinwu/p/11616471.html

时间: 2024-11-07 06:56:45

21.Nginx代理缓存的相关文章

Nginx代理缓存功能

Nginx代理缓存功能      Nginx缓存主要是用于减轻后端服务器的负载,提高网站并发量,提升用户体验度. 注意:Nginx反向代理的缓存功能是由ngx_http_proxy_module提供,在使用缓存功能时务必要nginx支持该模块.可能有些选项的不支持Nginx的版本,具体看官方文档: http://nginx.org/en/docs/http/ngx_http_proxy_module.html 后端服务器可能无法承受负载为了更好的提升用户体验环境介绍 服务器IP 服务器角色 19

Nginx代理缓存加速服务器

Nginx缓存概述 提供与Squid类似的缓存,把URL以及相关信息当成key,用MD5编码哈希后,把数据文件保存在硬盘上,并且只能为指定的URL或者状态码设置过期时间,并不支持类似 squid的purge命令来手动清除指定缓存页面,但是可以通过第三方的ngx_cache_purge来清除指定的URL缓存Nginx的缓存加速功能是由proxy_cache(用于反向代理和静态缓存)和fastcgi_cache(PHP动态缓存)两个功能模块完成 1.proxy_cache原理 2.Nginx缓存特点

网站集群架构实战(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken>下面是项目的一些简单介绍. WEB集群项目简介 随着网站访问量的激增,势必会导致网站的负载增加,现需求搭载一套高性能,高负载,高可用的网站集群架构以保障网站的持续.高效.安全.稳定的运行. 针对以上需求,我们采用了如下的技术: 使用负载均衡技术来实现网站请求的调度分发,减小后端服务器

Nginx - 代理、缓存

Nginx 标签 : nginx 代理 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供

FastDFS + Nginx 反向代理缓存 安装与配置

FastDFS + Nginx 反向代理缓存 安装与配置 作者:斯巴达克斯 时间:March 26, 2015 分类:存储 操作系统 CentOS release 6.5 (Final) 64 nginx相关软件 nginx-1.4.7 下载地址: http://nginx.org/en/download.html#nginx清除缓存模块 ngx_cache_purge-2.1 http://labs.frickle.com/nginx_ngx_cache_purge/pcre-8.36 ftp

nginx配置、反向代理缓存、负载均衡

一.nginx基本配置nginx开启文件目录浏览功能(web上显示目录) 1location / { 2 root /data/www/file //指定实际目录绝对路径: 3 autoindex on; //开启目录浏览功能: 4 autoindex_exact_size off; //关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b: 5 autoindex_localtime on; //开启以服务器本地时区显示文件修改日期! 6}php-fpm配置 1 location ~

Nginx构建反向代理缓存服务器

防伪码:曾经沧海难为水,除却巫山不是云. 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端:  反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提

nginx反向代理缓存服务器的构建

Nginx反向代理缓存服务器构建 一:代理服务可简单的分为正向代理和反向代理: 正向代理:用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理:与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就

Nginx反向代理缓存服务器搭建

Nginx反向代理 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器,并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源, 也可以设置一个代理服务器, 它提供的服务就是反向代理.