Nginx反向代理缓存配置

前言

  反向代理使用Nginx,当客户端向Nginx服务器发送请求时,Nginx转发给集群,当请求到达Nginx时可以加一层缓存,可存储动态页面,当缓存存在时Nginx直接将缓存返回给客户端,而不请求服务器,这样可以将一大部分请求拦截到直接返回缓存,使服务器压力降低。

 

缓存配置

  无缓存配置

复制代码
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include      mime.types;
    default_type  application/octet-stream;
    sendfile        on;

    keepalive_timeout  65;

    server {
        listen      8080;
        server_name  localhost;
        }
              
        location / {
            proxy_pass  http://127.0.0.1:8878;
        }
 }
View Code
复制代码

 

  proxy_pass指令:用来设置被代理服务器的地址,可以是主机名称,IP地址加端口号等形式

  现在加上缓存配置

复制代码
worker_processes  1;

events {
    worker_connections  1024;
}


http {
     proxy_cache_path ../data levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g;
    include      mime.types;
    default_type  application/octet-stream;
    sendfile        on;

    keepalive_timeout  65;

    
    
    server {
        listen      8080;
        server_name  localhost;
        }
              
        location / {
                 proxy_cache cache_one;
                 proxy_cache_valid 200 304 302 1h;
                 proxy_pass  http://127.0.0.1:8878;
                 proxy_cache_key  $uri$is_args$args;
        }
 }
View Code
复制代码

 

  加了三行:

1
proxy_cache_path  ../data  levels=1:2  keys_zone=cache_one:500m  inactive=1d  max_size=30g;

  proxy_cache_path:表示缓存文件存放的路径,该路径是预先就要创建好的 levels=1:2 :   设置在相对于path指定目录的第几级hash目录中缓存数据,levels=1,表示一级hash目录,levels=1:2,表示两级hash目录

 

1
proxy_cache cache_one;

  表示这个server使用上面设置的那个cache

 

1
proxy_cache_valid 200 304 302 24h;

  针对不同的HTTP响应状态设置不同的缓存时间,如果不设置,nginx服务器只为HTTP状态代码为200,301和302的响应数据做缓存 使用any可以表示缓存所有该指令中未设置的其他响应数据,如:

1
2
3
4
5
proxy_cache_valid 200 302 10m;
 
proxy_cache_valid 301 1h;
 
proxy_cache_valid any 1m;

  表示的是对返回状态为200,302的响应数据缓存10分钟,对返回状态码为301的响应数据缓存1小时,非200,302,301返回状态的响应数据缓存1分钟

 

 

 

 

 

 

 

 

posted @   贰拾~  阅读(2448)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示