一台腾讯云服务器上线全流程:备案、DNS、安全组、HTTPS 与审计一次到位
「网站做好了」和「网站正式上线」之间,隔着一长串和中国大陆托管环境强相关的事:ICP 备案、域名解析、云厂商安全组、HTTPS、访问日志审计。这篇文章是本站从搭建到正式上线的完整复盘——不是泛泛的「流程介绍」,而是每一步的必要性、踩过的坑,以及能照抄的落地命令。
一、ICP 备案:上线前的合规门槛
在中国大陆云服务器上跑 Web 服务,域名指向的站点必须完成 ICP 备案,否则服务商会拦截或封停 80/443。备案本身走云厂商控制台(腾讯云「备案」入口)提交,关键是备案通过后要把备案号挂到站点页脚并链接到工信部系统,这是规定动作:
<footer>
<div class="copy">© TechPulse · 保留所有权利</div>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">鲁ICP备2026051989号</a>
</footer>
两个细节:① beian.miit.gov.cn 是工信部备案系统官方入口,备案号要能点过去;② rel="noopener" 要加,避免新窗口打开时泄露 opener 引用。页脚挂在所有页面(含 404),而不是只挂首页——很多站要求「无论哪个页面都要能看见备案号」。静态站是每个 HTML 页一个 footer,务必全局替换,别漏掉博客详情页和 404 页。
二、DNS 解析:把域名指到公网 IP
解析这步看着简单,坑都在「忘配了某条」:
| 记录 | 指向 | 备注 |
|---|---|---|
| A www | 106.54.244.151 | 主站域名,必须配 |
| A @(apex) | 106.54.244.151 | 不配则 http://keenth.top 访问不了,还可能卡证书签发 |
| CNAME 子域 | 各业务 | 如 baby.keenth.top |
我这次就栽在 apex 上:给 Let's Encrypt 签发时把 keenth.top 一起带上,结果 apex 没有 A 记录,CA 拉不到挑战文件导致整张证书签发失败。ACME 挑战对「同证书的每个域名」都是硬性条件,不是「能解析就行」——先 nslookup / dig 确认每个要签的域名都能解析到本机,再签发。
三、安全组:默认只放行你真正对外开的端口
云主机外面还罩着一层「安全组」(相当于云厂商级的防火墙)。有台子经常出现「服务明明在跑、外网就是连不上」,最后发现是安全组没放行对应端口。默认建议:
| 端口 | 用途 | 建议 |
|---|---|---|
| 22 | SSH | 放行,且强烈建议只对固定 IP 或改用密钥 |
| 80 / 443 | HTTP / HTTPS | 放行 0.0.0.0/0(对外站点必需) |
| 3001/8081 等业务口 | 非标准服务 | 按需放行,否则即使 nginx/uFW 放开了也不可达 |
排查顺序要反过来:服务在(本机 curl 127.0.0.1:PORT 通)→ uFW/iptables 放行 → 安全组放行 → 外网可用。安全组是最后一道、也最容易被忘的一道。
四、HTTPS:免费证书也能安全合规
证书用自签还是 CA 签发?对外正式站没有悬念:写一本来自 CA、被浏览器信任的证书。备案过的域名可以直接用 Let's Encrypt 的免费证书(见本系列《Let's Encrypt 签发与 Nginx HTTPS 全流程实战》),一句话:certbot certonly --webroot -w /var/www/techpulse -d www.keenth.top → 443 配置 + 强制跳转 + HSTS → deploy-hook 自动续期。核心收益是「信任 + 加密 + 强制 HTTPS」三合一。
要特别提醒的是 HSTS 的绑定副作用:一旦下发 Strict-Transport-Security,浏览器会在缓存期内把这个域名的访问「焊死」在 HTTPS 上。确定不会再切回 HTTP 再加 includeSubDomains,新站建议先短 max-age 灰度。
五、访问日志与审计:上线≠放任不管
上线后第一件事不是庆祝,是把访问日志接进审计。nginx 默认 access_log 只记录原始请求,要做攻击意图识别要自定义 log_format(补真实 IP、耗时、定位),并给每个站配独立日志便于区分站点、单独审计:
log_format techpulse '$remote_addr - [$time_local] "$request" '
'$status $body_bytes_sent $request_time';
access_log /var/log/nginx/techpulse.access.log techpulse;
为什么上线当天就配日志:模型上线、攻击识别、限流 fail2ban 闭环的噪声基线越早建立越准,且流量高峰往往就在刚上线的传播期——错过这一期,后续「这是正常流量还是攻击」就难分难解了。日志审计的实现细节可以看本站《日志驱动的安全运营》那一篇。