Nginx缓存代理服务器

一、实验部署

linux下清除nginx的缓存 清除nginx服务器缓存_linux下清除nginx的缓存

二、搭建Nginx缓存代理服务器

1.nginx反向缓存代理服务配置

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

2.安装nginx服务

vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

3.修改/etc/nginx/nginx.conf配置文件,关闭长连接保持功能

vim /etc/nginx/nginx.conf  
###在第27行关闭nginx服务的长连接保持功能
    keepalive_timeout  0;

4.修改/etc/nginx/nginx.conf配置文件,添加反向代理缓存配置项

vim /etc/nginx/nginx.conf 
###在31行左右添加如下内容
   upstream web_server  {
   server 192.168.111.40:80;
   server 192.168.111.50:80;
   }
   proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

###创建反向缓存代理日志保存文件/data/nginx/cache
mkdir -p /data/nginx/cache

5.修改/etc/nginx/conf.d/default.conf配置文件,添加proxy转发模块

vim /etc/nginx/conf.d/default.conf 
###在11行添加下面内容
    proxy_cache my_cache;
    proxy_cache_key $request_uri;
    proxy_cache_valid 200 5m;
    add_header Nginx-Cache-Status $upstream_cache_status;
    proxy_pass http://web_server;

6.启动nginx服务

nginx -t
systemctl restart nginx
systemctl status nginx
netstat -lntp | grep nginx

三、配置nginx做web服务页面

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

安装nginx的repo
yum -y install nginx

制作nginx页面
cd /usr/share/nginx/html
 echo '<h1>IP:192.168.111.40,web</h1>' > test.html
 
 ###另一服务端的网页根目录
 echo '<h1>IP:192.168.111.50,web</h1>' > test.html

关闭nginx长连接
vim /etc/nginx/nginx.conf  
###在第27行关闭nginx服务的长连接保持功能
    keepalive_timeout  0;
    
启动nginx服务
systemctl restart nginx
systemctl enable nginx
systemctl status nginx
netstat -lntp | grep nginx

四、客户端验证

curl http://192.168.111.30/test.html

linux下清除nginx的缓存 清除nginx服务器缓存_nginx_02


linux下清除nginx的缓存 清除nginx服务器缓存_缓存_03

五、总结

nginx做缓存服务器时,同时可以在location中匹配动态页面。做动静分离,转发给后端动态页面服务器
http {
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
	
#####################################################
●path:强制参数,指定缓存文件的存放路径。
●levels:定义了缓存目录的层级。每层可以用1(最多16种选择,0-f)或2(最多256种选择,00-ff)表示,中间用 : 分隔。
proxy_cache_path /data/nginx/cache;  代表所有缓存只有一个目录,比如/data/nginx/cache/d7b6e5978e3f042f52e875005925e51b
proxy_cache_path /data/nginx/cache levels=1:2;  代表缓存是二层目录(有16*256=4096个目录),比如/data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b
●keys_zone:强制参数,定义共享内存区的名称和大小,该共享内存用于保存缓存项目的元数据(所有活动的key和缓存数据相关的信息),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key。
●inactive:删除指定时间内未被访问的缓存文件,默认10分钟。
●max_size:设置了缓存存储的上限,如果不指定,最大会用掉所有磁盘空间。
●use_temp_path:直接把临时文件放在缓存目录中。
#####################################################
    
    upstream cache_server{
        server 192.168.80.20:80;
        server 192.168.80.30:80;
    }
    
    server {
        listen 80;
        server_name www.kgc.com;
        location / {
            proxy_cache my_cache;               #指定用于页面缓存的共享内存,zone名称由proxy_cache_path指令定义
            proxy_cache_valid 200 5m;           #为不同的响应状态码设置不同的缓存时间,此为缓存状态码为200的请求,缓存时长为5分钟
            proxy_cache_key $request_uri;       #指定缓存文件的key为请求的URI
            add_header Nginx-Cache-Status $upstream_cache_status      #把缓存状态设置为头部信息,响应给客户端
            proxy_pass http://cache_server;     #设置代理转发的后端服务器的协议和地址
        }
    }
}



#对于一些实时性要求非常高的页面或数据来说,就不应该去设置缓存,下面来看看如何配置不缓存的内容。
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
  listen 80;
  server_name cache.lion.club;
  #URI 中后缀为 .txt 或 .text 的设置变量值为 "no cache"
  if ($request_uri ~ \.(txt|text)$) {
   set $cache_name "no cache"
  }
  
  location / {
    proxy_no_cache $cache_name;      #判断该变量是否有值,如果有值则不进行缓存,如果没有值则进行缓存
    proxy_cache my_cache;            #设置缓存内存
    proxy_cache_valid 200 5m;        #缓存状态为200的请求,缓存时长为5分钟
    proxy_cache_key $request_uri;    #缓存文件的key为请求的URI
    add_header Nginx-Cache-Status $upstream_cache_status    #把缓存状态设置为头部信息,响应给客户端
    proxy_pass http://cache_server;  #代理转发
  }
}