背景
2024年02月21日,接了一个需求:在域名下添加一个路径/.well-known/assetlinks.json。
本以为花不了几分钟,然后就开始动手将文件放到vue项目下的public文件夹下,接着构建部署,一顿操作下来,最后访问不了。
排查问题所在
访问不了,于是开始一步一步的查找问题所在。
1, 先检查下assetlinks.json有没有在打包文件夹dist中。
2, 接着检查assetlinks.json有没有上传到服务器,在检查assetlinks.json有没有上传到服务器的时候,看了半天,才恍然大悟。因为用的ls/ll命令检查文件是否存在,这种方式只能查看到不隐藏的文件/文件夹,如果要查看所有的文件应该使用ls -a命令去查看。
不可查看隐藏的文件
ls
或
ll
可查看隐藏和未隐藏的文件
ls -a
或
ll -a
3,然后检查写的部署脚本。脚本是先将dist压缩成tar然后再上传到服务器,再解压到当前tar包所在路径下,接着把解压出来的所有文件通过mv移到对应的路径。tar包是上传到服务器了的,所以就检查解压以及mv,解压也是没问题的。就开始检查mv,mv这里发现了隐藏的文件并没有移到目的地。
不可移动隐藏的文件
mv /root/web/m-xxx-com/* $bak
可移动指定的隐藏的文件
mv /root/web/m-xxx-com/{.well-known,}* $bak
4,隐藏文件虽然已经在指定的路径了,但是通过http依然访问不了,然后就开始找啊找,究竟是什么原因导致的不可访问呢?问了下go语言开发者的群,群里的人也是很吝啬自己的字符。于是只能不断地变换关键词去搜索引擎搜索,终于,通过变换出来的“nginx访问隐藏文件“找到了答案。
location ~ ^/\.well-known {
allow all;
}
5,访问链接,成功访问
后语
一步一步排查是最笨的方式,但是也是没有捷径的时候的唯一办法。
谢谢阅读!