You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX正向代理无Cache-Control响应头时如何设置默认12小时缓存

NGINX正向代理缓存配置及优化方案

缓存规则配置实现

你需要的「优先遵循响应Cache-Control头,无则默认缓存12小时」的规则,NGINX原生默认就会优先识别响应中的Cache-Control、Expires头作为缓存时长,仅需补充配置无缓存头时的默认有效期,同时修正现有配置的缓存键冲突问题即可,修改后的完整配置如下:

# http块内原有配置
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:100m max_size=2m inactive=12h use_temp_path=off;
# 新增map替换if判断,解决if指令不稳定问题,放置在http块内
map $http_x_example_use_https $proxy_scheme {
    1 https;
    default http;
}

server {
    # 保留你的原有server监听、端口等配置
    location ~* {
        resolver xx.xx.x.xxx;
        proxy_cache my_cache;
        add_header X-Cache-Status $upstream_cache_status;
        # 替换原有两个if判断
        proxy_pass $proxy_scheme://$host;
        # 新增缓存键配置,避免http/https同域名缓存冲突
        proxy_cache_key $scheme$host$request_uri;
        # 配置无Cache-Control头时的默认缓存时长,仅对200/301/302生效,不会覆盖响应自带的Cache-Control规则
        proxy_cache_valid 200 301 302 12h;
        # 新增缓存重校验,上游返回304时直接复用缓存,减少无效带宽消耗
        proxy_cache_revalidate on;

        proxy_redirect off;
        proxy_connect_timeout   4;
        proxy_send_timeout      4;
        proxy_read_timeout      4;
        send_timeout 4;
        proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
        proxy_cache_lock on;
    }
}

配置优化建议

  • 调整缓存容量参数:你当前配置的max_size=2m仅支持最大2MB的缓存总容量,很容易触发缓存淘汰导致命中率极低,建议根据实际服务器存储余量调整到合适大小,比如业务缓存量不大可以调整为max_size=10g。
  • 调整缓存存储路径:/tmp目录默认是内存临时文件系统,服务器重启后缓存会全部丢失,如果需要缓存持久化,可以将缓存路径修改为磁盘目录,比如/var/cache/nginx_cache。
  • 增加访问限制:当前配置没有任何访问控制,作为开放的正向代理很容易被恶意扫描滥用,建议增加来源IP白名单,或者限制允许代理的目标域名范围。
  • 调整超时参数:当前所有超时配置均为4秒,若请求的外部服务网络波动较大,很容易出现非必要的超时错误,建议根据业务可接受的等待时长适当调大,比如将proxy_read_timeout调整为10~15秒。
  • 补充缓存跳过规则:如果不需要缓存带Cookie、Authorization头的响应,可以增加proxy_cache_bypass $http_cookie $http_authorization;配置,避免敏感内容被缓存。

内容的提问来源于stack exchange,提问作者frapsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:48:03