我用Nuxt写了一个前端页面. 用到的服务端渲染, 由于不是很熟悉, 所以难免会有一些错误导致程序不能正常运行
由于上线是需要域名的, 所以为了更真实的模拟线上环境, 我在本地使用宝塔搭建了个站点, 使用了虚拟域名进行访问
但使用IP初次更换域名访问时, 程序还是难免的发生了一些错误, 于是我~~
修修补补大半天. 打开一看503
玩笑话, 并不是真的503, 就是第一次访问的错误页面.
为什么这个问题一开始没有被发现?
因为后来我找到问题的真正原因的时候才知道, 这个缓存是12小时, 也就是白天一天瞎忙活, 第二天电脑一开, 哎呦, 正常了?
然后就继续往下写代码. 又这样写了一天后, 最后的代码需要重构一下, 就是这一次重构不要紧, 又崩了!
然后第三天又是折腾一整天
太糟心, 真的太糟心.
刚刚吃晚饭的时候还一头懵的在思考问题到底发生在哪里.
不知道怎么就鬼使神差的用IP访问试了下. 欸嘿, 它正常了???
赶紧用域名又试了下, 果然, 崩了
从这里, 我立刻定位到是nginx的问题, 而我这个站点是个纯静态站点, 只在上面配置过反向代理
那么问题显而易见, 就是这个反向代理缓存的锅, 因为我清楚的记得新建反向代理时, 那里的缓存开关是默认开启的, 而且在编辑页没有开关控制, 只能在列表中点击关闭. 但是虽然显示的关闭, 但就是个障眼法
我不知道这个功能是不是win版使用的人数并不多而不被重视, 因为一模一样的问题我在官方论坛找到了一年前的帖子. 当然解决方法也是参照贴里所说, 将后三行手动注释掉即可
#proxy_cache cache_one;
#proxy_cache_key $host$uri$is_args$args;
#proxy_cache_valid 200 304 301 302 12h;
依照工作人员回帖所讲, 这个是开启缓存的, (吃了技术栈不足的亏, cache_one
要是写成cache_on
我说不定都能理解这是开启了缓存, 但是这里我真的没有看懂, 而且我是不是太信任图形界面给我的假象了, 它真的写的是已关闭)
其实在解决之前, 我没想到是这里造成的, 我看到已经关了, 还生效, 那怎么办? 手动删缓存. 缓存目录也是找了好久才找到
D:\BtSoft\nginx\proxy_cache_dir
我删了缓存之后刷新了下页面, 当时就只想破口而出了 ! 正常了~
紧接着, 后台修改了下数据, 又刷新下页面, 想着测试下到底是否正常, 结果显而易见, 它不会更新.
然后我寻思着, 明明显示已经关闭缓存了, 为什么还会缓存起来呢?
接着是找关闭缓存的方法, 找了好久没找到. 最后想点暴力手段来解决, 在宝塔后台把这个文件夹权限全关掉了. 结果不生效,
进资源管理器把文件夹设置为只读, 依然不生效~
本打算就手动删吧, 但是越想越气不过, 就继续查, 还真让我查到了, 原来一年前就已经出现过这个问题. 我真的不理解, 为什么不解决.
我之所以半夜跑来写这个, 也是因为我曾经被这个问题折腾了不是两三次, 但当时这个东西纯粹是自己玩别的东西偶尔用那么一次, 出问题了就折腾了会儿发现不知道怎么回事就那么过去了. 这次不行啊, 我反复修改代码要了老命了. 工期延误不说, 老板觉得我这是居家偷懒那真是有理说不清.
附上去年的官方回复贴: https://www.bt.cn/bbs/thread-31411-1-1.html
真的, 快修吧, 发现问题不解决和没发现问题是两码事. 不是人人都是全栈工程师, 这东西看似不难, 但是真到了用户手里是能难为死人的.