赞
踩
昨天打开我的gpt镜像网站,意外发现静态图片资源全都无法获取了
一番排查下来,发现是引用的cdn链接失效了
且cdn源是属于七牛云的,且不再维护,于是果断切换到cloudflare
- export function getEmojiUrl(unified: string, style: EmojiStyle) {
- // return `https://cdn.staticfile.org/emoji-datasource-apple/14.0.0/img/${style}/64/${unified}.png`;
- return `https://cdnjs.cloudflare.com/ajax/libs/emoji-datasource-apple/14.0.0/img/${style}/64/${unified}.png`;
- }
然后重新给前端项目打包,打镜像,部署
- yarn
- yarn install
- yarn build
- docker build -t aichat-web:latest .
- docker-compose up -d
一系列操作之后,发现...静态资源还是不生效,cdn修改未成功
抱着怀疑的态度,进行各种合理猜测和推敲,比如编译不成功?代码未成功修改?浏览器缓存?种种,经验证都不是,最后想到了可以绕过nginx,通过ip+端口直连前端服务,果然通了,代码一切正常。
到了这里问题已经很明显了,就是nginx缓存导致的
nginx会缓存一些静态资源,如果恰巧修改了静态资源,且未清除缓存,就可能会导致问题的产生
这里就很头疼了,因为缓存相关配置指令是 "proxy_cache_path "
,但默认情况下,nginx.conf配置文件是不包含这个指令的,不过好在困难总比方法多,可以使用linux的搜索功能。
grep -r "proxy_cache_path" /www
由于我的nginx是从宝塔上安装的,所以搜索这个问题。
果然被我发现端倪了
/www/server/nginx/conf/proxy.conf:proxy_cache_path /www/server/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g;
查看这个文件:
cat /www/server/nginx/conf/proxy.conf
- proxy_temp_path /www/server/nginx/proxy_temp_dir;
- proxy_cache_path /www/server/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g;
- client_body_buffer_size 512k;
- proxy_connect_timeout 60;
- proxy_read_timeout 60;
- proxy_send_timeout 60;
- proxy_buffer_size 32k;
- proxy_buffers 4 64k;
- proxy_busy_buffers_size 128k;
- proxy_temp_file_write_size 128k;
- proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
- proxy_cache cache_one;
通过 inactive=1d 我们知道了缓存时间为1天,这里说的是不活跃的资源,如果活跃就会长期保存,所以手动清除缓存是必要的。
通过 proxy_cache_path 我们知道了缓存目录,清除它
rm -rf /www/server/nginx/proxy_cache_dir/*
重载nginx(可能不需要这一步)
service nginx force-reload
至此问题成功解决
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。