服务器 > 服务器 > 缓存

Nginx 缓存系统 proxy_cache工作原理解析

59人参与 2024-12-13 缓存

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 python 机器学习入门之pandas的使用

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

nginx 的 proxy_cache 模块是 nginx 代理功能的一部分,它允许 nginx 缓存来自后端服务器的响应,以便在后续的请求中可以直接从缓存中提供内容,而无需再次向后端服务器请求。这种机制可以显著提高静态内容的响应速度,减轻后端服务器的负载,并提高网站的可扩展性。

功能特点

减少后端负载:通过缓存静态内容,减少对后端服务器的请求,降低负载。
提高响应速度:缓存的内容可以快速响应后续相同的请求,提高用户体验。
灵活的缓存策略:可以根据不同的 http 响应状态码设置不同的缓存有效期。
缓存控制:提供了丰富的指令来控制哪些请求可以被缓存,哪些请求应该绕过缓存。

proxy_cache工作原理

nginx 的 proxy_cache 模块允许 nginx 作为反向代理服务器时缓存后端服务器的响应。以下是 proxy_cache 模块的工作原理:

示意图

+--------+     +---------+     +-----------+     +----------+
| 客户端  | --> |   nginx  | --> | 后端服务器 | --> |   nginx   |
|         |--> |  (查找缓存) |     |           | <-- |  (返回    |
|         |    |  (缓存命中) |     |           |     |  响应)   |
|         |    |  (缓存未命中) |     |           |     +----------+
+---+----+    +---------+     +-----+---+---+
    |                |              |
    |                |              | (缓存存储)
    |                |              |
    +----------------+--------------+

配置文件示例

# 定义 http 块,nginx 的主要配置都在这个块内
http {
    # 设置缓存路径及其参数
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=7d use_temp_path=off;
    # levels 定义缓存目录的层级,1:2 表示两层
    # keys_zone 定义缓存键和大小,my_cache:10m 表示名称为 my_cache,大小为 10mb
    # max_size 控制缓存区域的最大磁盘空间,这里设置为 10gb
    # inactive 定义缓存数据在指定时间内未被访问则自动清除的时间,这里设置为 7 天
    # use_temp_path 设置为 off,表示缓存文件直接写到 cache 中而不使用 temp_path,避免文件拷贝导致影响性能
    # 定义 server 块,用于监听 80 端口并处理对 example.com 的请求
    server {
        # 监听 80 端口
        listen 80;
        # 设置服务器名,这里为 example.com
        server_name example.com;
        # 定义 location 块,用于处理根路径下的请求
        location / {
            # 将请求代理到后端服务器,这里为 http://backend
            proxy_pass http://backend;
            # 启用缓存,并指定缓存区域为 my_cache
            proxy_cache my_cache;
            # 设置缓存键,这里包括请求方法、主机和请求 uri
            proxy_cache_key "$request_method$host$request_uri";
            # 设置不同 http 状态码的缓存有效期,200 和 302 状态码的响应缓存 10 分钟
            proxy_cache_valid 200 302 10m;
            # 设置 404 状态码的响应缓存 1 分钟
            proxy_cache_valid 404 1m;
            # 定义条件跳过缓存,如果请求中包含 no_cache 参数或特定的 http 头,则不使用缓存
            proxy_cache_bypass $cookie_no_cache $arg_no_cache$http_pragma$http_authorization;
            # 定义条件不缓存响应,如果请求中包含 no_cache 参数或特定的 http 头,则不缓存响应
            proxy_no_cache $cookie_no_cache $arg_no_cache$http_pragma$http_authorization;
        }
    }
}

这段配置注释详细解释了 nginx 配置文件中的每个指令和它们的参数,以便更好地理解配置文件的作用和行为。

参数详尽说明

proxy_cache_bypassproxy_no_cache:定义条件跳过缓存和避免缓存特定响应。

性能优化方案

总结

通过以上配置和优化方案,可以有效地管理 nginx 的缓存行为,提高网站的性能,同时保证敏感或动态数据的实时性和安全性。

到此这篇关于nginx 缓存系统 proxy_cache详解的文章就介绍到这了,更多相关nginx 缓存系统 proxy_cache内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Nginx 缓存清理的具体实现

12-26

Nginx FastCGI缓存的实现示例

12-28

nginx控制连接数及访问速率的实现

12-28

nginx文件上传下载控制的实现示例

12-28

keepalived+nginx实现双服务器主备方案

12-28

TomCat启动找不到配置的环境变量解决

12-04

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论