记录一下,已经解决了,用的deepseek给的终极解决方案(分步操作)
第一步:彻底禁用Nginx缓存
请按以下配置修改你的反向代理配置:
nginx
复制
location ^~ / {
proxy_pass http://127.0.0.1:2086;
# 强制禁用代理缓存(最关键的两行)
proxy_cache off;
proxy_buffering off;
# 防止任何形式的缓存(包括浏览器和CDN)
add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0";
add_header Pragma "no-cache";
expires -1;
# 确保不同域名的缓存键隔离(重要!)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 其他保持默认...
}
第二步:检查Nginx是否有隐藏缓存配置
检查全局缓存配置
在 /etc/nginx/nginx.conf 或 /www/server/nginx/conf/nginx.conf 中搜索 proxy_cache_path,如果存在类似配置:
nginx
复制
proxy_cache_path /www/server/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g;
请直接注释或删除这一行,并重启Nginx。
检查站点级缓存
在宝塔面板的网站设置中,检查是否意外开启了"静态缓存"或"伪静态"中的缓存规则。
第三步:清除残留缓存并重启服务
bash
复制
# 清除Nginx缓存目录
rm -rf /www/server/nginx/proxy_cache_dir/*
# 重启Nginx
systemctl restart nginx
第四步:验证缓存是否生效
通过curl命令检查响应头
执行以下命令查看响应头是否包含缓存禁用标记:
bash
复制
curl -I http://域名A
应返回:
复制
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Pragma: no-cache
Expires: -1
强制刷新测试
用浏览器无痕模式访问不同域名,观察是否仍存在窜站问题。 |