与 hexo 有关的神必重定向
昨天在测验网站的时候,发现一个在任何界面点击友链和关于链接时会神秘的重定向到错误地址frp-act.top:3000/links/
。而正确地址https://frp-act.top:49191/links/
是可以访问的
于是我尝试在nginx
配置中修改重定向规则,强制将frp-act.top:3000/links/
重定向至https://frp-act.top:49191/links/
,结果是两个网址都 404 了
尝试寻找最开始出错的原因,发现hexo
在生成静态文件时给出的相对路径是/links
,并不包含尾斜杠,在不开隧道的情况下,一般浏览器会自动补上尾斜杠以访问正确地址
在nginx
进行反代的环境下,理应也会进行补全,事实上,nginx
确实给出了带上尾斜杠的重定向地址,然而其却将frp-act.top:49191
这个隧道域名+隧道口重定向为了frp-act.top:3000
这种隧道域名+本地端口这种不伦不类的东西
在对 nginx 反代进行了时长 3h 的各种配置组合后,我放弃了对 nginx 的重新配置,完全不能理解其中为什么会出现莫名其妙的 404、403 和 500
于是决定直接修改服务器中生成的静态文件
使用 vscode 通过 ssh 连接服务器
当然不可能用 nano 或者 vim 这种编辑器去进行 160 处修改,这里我们选择天下第一的 vscode
在 vscode 上下载 remote-ssh 插件,点击左侧边栏的远程资源管理器
点击新建远程,在上边栏中输入
1 | ssh 用户名@服务器ip |
按下 enter,系统会自动进行配置,按照引导一路向下,即可在服务器中安装 vscode server,从而使用 vscode 进行远程操作
这里注意给电脑开上代理,不然无法下载 vscode server
然后可以通过 vscode 的查找功能统一替换错误的相对地址
使用 git 上传静态文件
直接通过hexo d
上传静态文件非常方便,我们对服务器端 git 稍作配置
首先,如果你的服务器没有 git(树莓派就没有),可以运行
1 | sudo apt-get install git |
下载 git
然后在一个合适的地方,比如/home/kpmark/(kpmark 是我的用户名 )新建一个 git 仓库存放我需要的 hooks
使用以下命令新建文件夹(或者你已经用 vscode 远程控制了,直接右键新建即可),并在文件夹中初始化一个 git 裸仓库
1 | mkdir /homek/kpmark/git |
进入该仓库,在 hooks 文件夹中新建文件post-receive
,并写入以下内容
1 | git --work-tree=/home/kpmark/hexo-blog --git-dir=/home/kpmark/git/hexo.git checkout -f |
这里前面的地址是你博客静态文件所在的地址,是该 git 仓库的工作地址,后面是你 git 仓库的位置,这条命令会强制更新你工作目录的文件
在/home/kpmark/下创建.ssh
文件夹(如果你没有的话),然后将你 windows 电脑的 ssh 公钥复制到其中的 authorized_keys 文件中
最后修改 hexo 配置,在_config.yml
文件中,修改 url 为你的域名,修改 deploy 为
1 | deploy: |
这里如果你有公网 ip 就直接写上去,非常方便
如果开隧道的话,必须对 ssh 进行额外配置,这里不赘述,因为会非常影响你其他需要 ssh 的仓库,建议之间局域网 ip 算了
至此,配置成功