静态站部署三条路:GitHub Pages / Vercel / 自建服务器
静态站最大的好处是:部署目标可以随便换。同一个目录,今天放 GitHub Pages,明天搬 Vercel,后天丢自己服务器上,代码一行都不用改。
一、方案对比
| 方案 | 费用 | 自定义域名 | HTTPS | 国内访问 | 可控性 |
|---|---|---|---|---|---|
| GitHub Pages | 免费 | 支持(CNAME) | 自动签发 | 一般,时快时慢 | 低 |
| Vercel | 免费额度充足 | 支持 | 自动签发 | 不稳定,偶发被墙 | 中 |
| Cloudflare Pages | 免费 | 支持 | 自动签发 | 中等 | 中 |
| 自建 Nginx | 服务器费用 | 完全自由 | 自己配 certbot | 取决于机房线路 | 高 |
二、GitHub Pages
最省心的入门方式。仓库 Settings → Pages → Build and deployment 选分支和目录即可。
绑定自定义域名:在仓库根目录放一个 CNAME 文件(内容就是域名),然后去 DNS 加记录。
# 根域名:加 A 记录,指向 GitHub 的四个 IP
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
# www:加 CNAME 记录指向 username.github.io
www CNAME bzii.github.io用 GitHub Actions 自动部署(.github/workflows/deploy.yml):
name: deploy
on:
push:
branches: [ main ]
permissions:
contents: read
pages: write
id-token: write
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/upload-pages-artifact@v3
with:
path: .
- id: deployment
uses: actions/deploy-pages@v4Push 之后 30 秒 ~ 2 分钟生效。GitHub Pages 默认忽略下划线开头的目录(Jekyll 行为),在根目录放一个空
.nojekyll文件可绕过。
三、Vercel
把仓库导进去就行,构建命令留空、输出目录填 .(纯静态无构建)。每次 push 都会生成一条预览链接,这个体验是三者里最好的。
npm i -g vercel
vercel --prod自定义域名:控制台 Domains 里添加,按提示加一条 A 记录(76.76.21.21)或 CNAME(cname.vercel-dns.com),证书全自动。
四、自建服务器(我最常用的方式)
rsync -avz --delete -e "ssh -p 2222" ./ user@example.com:/var/www/baize/
# 首次部署要确认权限与配置
sudo chown -R www-data:www-data /var/www/baize
sudo nginx -t && sudo systemctl reload nginx套上 Cloudflare CDN 之后,源站 IP 被隐藏,还能白嫖缓存与压缩,性价比最高。
五、部署后的自检清单
# 1. HTTP 状态码与耗时
curl -o /dev/null -s -w "code=%{http_code} time=%{time_total}s\n" https://www.bzii.cn
# 2. 检查跳转(www → 主域、http → https)
curl -sI http://www.bzii.cn | grep -i location
# 3. 检查证书链完整
openssl s_client -connect www.bzii.cn:443 -servername www.bzii.cn </dev/null 2>/dev/null | grep -E "Verify|subject="
# 4. 确认压缩生效
curl -sI -H "Accept-Encoding: gzip" https://www.bzii.cn | grep -i content-encoding六、我的组合
- 主站:自建 Nginx(可控、能加自定义逻辑、日志在自己手里);
- 备份镜像:GitHub Pages(哪天服务器挂了,DNS 一切就能切过去);
- 预览分支:Vercel(push 即出预览链接,改样式时很方便)。
三条路同时存在成本几乎为零,但容灾能力高一个档次。
