当前位置:论坛首页 > Windows面板 > 求助

如何彻底关闭宝塔面板反向代理的缓存?

发表在 Windows面板昨天 17:54 [复制链接] 0 31

为了能快速了解并处理您的问题,请提供以下基础信息:
面板、插件版本:
面板:免费版 9.4.0

系统版本:
系统:CentOS 7.9.2009 x86_64(Py3.7.9)
问题描述:
如何彻底关闭宝塔面板反向代理的缓存?
我建立一个纯静态nginx网站,同时绑定域名A、B、C,反向代理至127.0.0.1:2086(后端为内网穿透frp的http端口,会根据不同的域名显示不同的内网服务)

现在存在的问题就是会缓存页面js等,导致打开对应域名无法显示对应内网服务。

比如域名A对应的服务是Docker的“Portainer”面板,缓存后,打开域名B和C都是显示的“Portainer”缓存加载页面,只不过加载不出来,因为frp后端对应的B和C的资源没有请求的内容。

而使用诸如A:2086,B:2086,C:2086的域名+端口的方式就可以访问到正确的内网服务内容。

最神奇的就是,我把内网A对应的“Portainer”服务给停了,访问A:2086是404了,访问域名A、B、C的80和443端口仍然加载缓存的“Portainer”首页加载页面。

所以,如何彻底禁用现在版本宝塔面板反向代理的缓存?我确定这是个bug,因为之前使用的是7.x的版本,一切正常,手欠点了下更新,一切都回不去了。

临时解决办法:删除缓存rm -rf /www/server/nginx/proxy_cache_dir/*,当时能正常显示各自域名对应的服务,但是第二天又都显示缓存了。
相关截图(日志、错误):
反向代理配置已禁用缓存,主配置中无任何cache, expires字样,以下是反向代理的配置:

#PROXY-START/

location ^~ /
{
    proxy_pass http://127.0.0.1:2086;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    # proxy_hide_header Upgrade;

    #add_header X-Cache $upstream_cache_status;

    #Set Nginx Cache
    #解决 499 服务端超时客户端强制关闭
    proxy_ignore_client_abort on;
    #如果expires 和 add_header 同时开启的情况下,则add_header优于expires生效
    #Cache-Control比Expires可以控制的多一些, 而且Cache-Control会重写Expires的规则
    #设置禁止浏览器缓存,每次都从服务器请求
    add_header Cache-Control no-cache;
    add_header Cache-Control private;
    #设置缓存上面定义的后缀文件缓存到浏览器的生存时间
    expires -1s;
    }

#PROXY-END/



盲猜是NGINX把2086端口的反向代理都缓存到一个文件夹,不同域名调用缓存的时候就窜站了。

因为我试过建立3个不同的项目,分别绑定域名A、B、C,但是均反向代理指向2086端口,初始访问正常,但第二天仍全部显示相同缓存内容
使用道具 举报 只看该作者 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表