虽然自建 Nginx 纯净高效,但为了追求可视化管理企业级安全特性,我决定将 Web 服务迁移到 宝塔面板 Nginx

迁移前备份

宝塔面板的 Nginx 和 Ubantu 系统 apt 安装的 Nginx 会引起冲突,因此需要先卸载系统上安装的 Nginx 。首先将所有旧的 Nginx 配置文件(/etc/nginx)打包,确保数据无失:

1
2
3
4
# 停止旧服务并创建备份文件
sudo service nginx stop
mkdir ~/nginx_conf
sudo cp -r /etc/nginx ~/nginx_conf/

卸载系统 Nginx

使用 purge 确保移除所有旧 Nginx 文件和配置,为宝塔环境腾出干净空间:

1
2
sudo apt purge nginx nginx-common -y
sudo apt autoremove -y

部署宝塔 Nginx 与站点创建

登录宝塔面板,安装 LNMP 环境,然后创建两个站点。

由于需要维持 Cloudflare Tunnel 的自定义端口,需要在宝塔的 “添加站点” 时使用 “另加端口格式”

站点 宝塔项目类型 域名填写 根目录
博客主站 HTML 项目 tianlejin.top:50001
www.tianlejin.top:50001
/home/tianlejin/myblog/txm_blog/public
图床站点 HTML 项目 img.tianlejin.top:50000 /home/tianlejin/myblog/blog-imgs

配置文件的优化与安全加固

宝塔自动生成的 Nginx 配置虽然全面,但需要根据我的需求进行定制化。(参考原先的配置文件:~/nginx_conf/sites-available

1. 博客主站:补充 Hexo 伪静态规则

由于 Hexo 使用伪静态链接(无 .html 后缀),宝塔默认配置无法识别。需要在 “伪静态” 区域补充核心逻辑:

1
2
3
4
5
6
7
8
# 粘贴到 www.tianlejin.top 站点的“伪静态”
location / {
# 禁止目录浏览
autoindex off;

# Hexo 博客必须的查找顺序:先 $uri,再 $uri/,最后 404
try_files $uri $uri/ =404;
}

2. 图床站点:关闭目录浏览并利用宝塔优化

图床服务无需复杂的 try_files,只需利用宝塔内置的 安全防护缓存优化。唯一需要手动加固的是禁止目录浏览。

将以下配置添加到 img.tianlejin.top 站点的 “伪静态” 区域:

1
2
3
4
# 确保图床目录结构不会暴露给访客
location / {
autoindex off;
}