这个博客之前一直用的 Wordpress,详细比较之后,这次决心换成静态的 hexo 了。由于国内需要备案,博客内容本身也没有问题,都是技术相关经验积累,但备案太麻烦,一直用的外面的 VPS。旧的方案是 vps 装 Ubuntu,然后安装 nginx 和 frp,nginx 配置 https,反向代理到 frp 服务端 HTTPS 服务 IP 和端口,frp 内网穿透到内网自建服务器。这样主体的 wordpress 文件、数据库都放在内网,外网只是入口,博客数据安全有保证。这次博客由动态的 wordpress 迁移到静态的 hexo 之后,整体技术方案也调整了一下。
  基本思路还是数据放内部,vps 做流量转发反向代理。VPS 裸机安装 Pathed 的 RouterOS,内网 RouterOS 通过 EOIP 与外网的 RouterOS 建立局域网,配置静态路由。本来研究了很久的 WireGuard,但是死活不成功,在内网测试好的方案,放到外网就不行,大概率是 GFW 重点关注了。由于没啥违规内容,就直接用没有加密的 EOIP 了。RouterOS 配置 Container安装 Ubuntu/nginx包。域名指向 VPS RouterOS IP,然后 RouterOS 做 dst-nat,将 443 端口转发给 Container 的 nginx。nginx 配置反向代理到 VPSRouterOS 的 EOIP 接口下的内网 IP 地址。也尝试过通过frp进行流量转发(比如基于frp官方镜像在RouterOS下通过Container方式安装frp),但体验下来不如直接通过RouterOS来得方便和稳定,这一切前提都是没有比GFW重点关注。
  内网很简单,直接安装 nginx,将 hexo 的 public 文件 PUT 到网页 root 目录。由于内网 nginx 服务器 IP 和内网 EOIP 不在一个网段,配置静态路由就可以互通。
  由于 VPS 主系统是 RouterOS,网络配置特别方便,但其他比如 Container 等更加通用的配置则有一定的特殊性,具体遇到的一些坑,重点提一下:
   1.RouerOS 配置 Container
  这里遇到的主要问题就是即便是美国 VPS,在线 pull 镜像也有问题,后来就直接先下载好镜像(用得这个 DockerPull 工具,一般选毫秒镜像),然后配置 Container 时选择下载好的本地镜像 )
   2.RouterOS 里的 Container 配置文件权限问题
  对于 Container 来说,考虑到安全性和文件大小限制,一般 Container 里不配置 SSHD。对于 RouterOS 下的文件传数据问题,我是通过 SSH 连接 RouterOS 的 SSH 服务,然后进入 Container 的文件目录。但有个问题就是默认是 nobody 用户,改起来比较费劲。后来还是延续在 RouterOS 的 terminal 通过 shell 进入相应的 Container,前台配置文件。
   3.nginx 镜像选择
  之前试过 Alpine 版的镜像,但对于 SNI 的支持一直有问题(配置文件显示支持,但死活识别不了第二个 SSL 证书),本地测试了 nginx 24.04 下的 nginx 没问题,就把镜像换成了 Ubuntu 维护的 ubuntu/nginx 包