用 Nginx 的 root 指令可直接托管静态博客,只需将 root 指向 Hexo/Hugo 等生成的 public 目录(如 /home/user/myblog/public),配置 index index.html 和 try_files,并确保 Nginx 用户有读取权限,即可通过浏览器访问静态页面。

用 Nginx 的 root 指令搭建个人博客服务器,核心是让静态 HTML、CSS、JS 文件被正确响应,无需后端服务。只要你的博客是基于 Hexo、Hugo、Jekyll 或纯手写静态页,这方法最轻量、最直接。
确认博客已生成静态文件
root 参数只服务文件,不执行代码。确保你已完成以下步骤:
- 使用 Hexo 执行
hexo generate(或hexo g),输出目录默认为public/ - 使用 Hugo 执行
hugo,输出目录默认为public/ - 检查该目录下存在
index.html,且能本地双击打开正常浏览
配置 Nginx 的 root 指向博客根目录
编辑站点配置文件(如 /etc/nginx/conf.d/blog.conf),关键部分如下:
server {
listen 80;
server_name blog.example.com;
<pre class="brush:php;toolbar:false;">root /home/user/myblog/public; # ← 这里填你博客 public 目录的绝对路径
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
注意:
- root 必须写绝对路径,不能用 ~/ 或相对路径
- 不要写成 root /home/user/myblog/public/;(末尾斜杠不影响,但保持统一更稳妥)
- 如果博客含子路径(如部署在 /blog/ 下),应改用 alias,而非 root
权限与重启:让 Nginx 能读取文件
Nginx 工作进程通常以 www-data(Ubuntu/Debian)或 nginx(CentOS/RHEL)用户运行,需确保它有读取权限:
- 运行
ls -l /home/user/myblog/public,确认文件对组/其他用户至少有r--权限 - 若无权限,执行:
chmod -R o+r /home/user/myblog/public - 检查配置语法:
nginx -t - 重载服务:
sudo systemctl reload nginx
补充:支持 Markdown 预览?不行,root 不处理动态逻辑
root 是纯静态服务指令,它不会解析 Markdown、不运行 Node.js、也不调用 Python。如果你希望实时编辑 Markdown 并预览,需要额外工具(如 live-server 或 marktext 内置预览),但那不属于 Nginx root 的职责范围。Nginx 在这里只做一件事:把磁盘上的 index.html 和资源,原样发给浏览器。










