主题
一条硬规则
中国大陆的规则很明确:首次备案或新增网站期间,网站不允许上线访问。 关闭方式有两种——暂停域名解析,或者关闭服务器的 Web 访问权限。
我选择暂停解析:一条 A 记录都不加。这比关端口更干净,因为管局核验时域名直接不可达,没有任何解释空间。
一个绝不能做的操作
不要为了"先跑起来看看",把域名解析到境外服务器或另一台机器上。
这个想法很自然——反正只是个测试。但管局核验的就是这个域名,一旦查到它已经能访问,直接驳回;更麻烦的是可能进黑名单,重新提交要等更久。为了几天的方便换来几周的延误,完全不划算。
等待期其实是最好的开发窗口
备案审核通常 1–3 周。这段时间没有流量、没有用户、没有线上故障,是整件事里唯一一段可以安心把基础设施做扎实的时间。我把它拆成三块:
一、服务器按上线标准配好,但对外关闭
bash
# 1) 加 swap —— 这是 2G 内存服务器的生死线
fallocate -l 2G /swapfile && chmod 600 /swapfile
mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
# 2) SSH 加固:改端口、禁 root 密码登录(先配好密钥再改!)
# 3) 装 fail2ban 防爆破
# 4) 安全组只放行 SSH,80/443 等备案通过再开顺序很重要:先确认能用密钥登录新用户,再禁用密码认证。反过来做会把自己锁在门外,只能去控制台挂 VNC 救回来。
二、站点在本地做完
静态站点生成器的好处在这里体现得很明显:dev 服务器起在 localhost,构建产物是纯静态文件,整个过程零风险,完全不违反"不能上线"的要求。
顺带一个必须记住的部署原则:构建在本地做,服务器只接收产物。
2 核 2G 跑前端构建有实打实的 OOM 风险,而且在服务器上装 Node 工具链本身就是多余的攻击面。正确的流程是:
bash
# 本地
npm run build
rsync -avz --delete site/.vitepress/dist/ deploy@server:/var/www/site/--delete 不能省——否则你删掉的文章在线上依然能访问,而且不会有人告诉你。
三、把合规收尾提前准备好
页脚位置先占好:
html
<a href="https://beian.miit.gov.cn/">陇ICP备2026009736号</a>备案号展示是硬性要求,别等上线那天才想起来。
另外公安联网备案要单独办,多数地区要求网站在开通后 30 日内完成。 注意一个容易搞反的点:公网安备号在拿到真实号之前不要放占位—— 真 ICP 配一个假的"公网安备XXXXXXXX号",比暂时不写更容易出问题。 拿到真号后再补那一行。
时间线
text
第 1 周 域名实名满 3 天 → 提交备案
服务器加固 + swap
本地搭好站点
第 1–3 周 写内容、写部署脚本(本地验证)
域名无解析、服务器无公网 Web 端口
备案通过 挂备案号 → 开 80/443 → 加解析 → 部署 → 验 HTTPS
+30 日内 公安联网备案一句话
备案等待期不是"卡住了",而是唯一一段可以不计后果地折腾基础设施的时间。上线之后每改一次配置都有用户在看着。