为了能快速了解并处理您的问题,请提供以下基础信息: 面板:免费版 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端口,初始访问正常,但第二天仍全部显示相同缓存内容
|
|