个人网站 ICP 备案全流程:从买服务器到公安备案的一次性指南
写在前面:本文记录了作者 2026 年 7-8 月的一次完整实战。 适用对象:个人开发者 / 独立站长,已具备基础 Linux 与命令行能力。 不适用:企业备案、境外服务器备案、阿里云备案(流程类似但细节不同)。
目录
- 第 1 章 · 为什么个人站长必须做 ICP 备案
- 第 2 章 · 准备阶段:三件套
- 第 3 章 · ICP 备案实战(核心章节)
- 第 4 章 · 域名解析
- 第 5 章 · SSL 证书与 Nginx HTTPS(踩坑重灾区)
- 第 6 章 · 公安联网备案(30 日时限)
- 附录 A · 速查命令表
- 附录 B · 名词解释
- 附录 C · 腾讯云控制台链接合集
第 1 章 · 为什么个人站长必须做 ICP 备案
很多个人开发者的第一步是「写代码 → 部署 → 让别人能访问」。 但你用国内服务器,域名指向公网 IP 的那一刻起,工信部就要求你完成 ICP 备案, 否则:
- 被运营商屏蔽:域名解析到国内服务器 IP 后,运营商定期核查,未备案域名会被直接 reset 到 127.0.0.1,访问者看到「该网站暂时无法访问」。
- 无法接入 CDN:阿里云、腾讯云的 CDN 都要求 ICP 备案号作为准入条件,没备案意味着你只能裸跑源站,抗不住流量。
- 被罚款:根据《非经营性互联网信息服务备案管理办法》,未备案擅自提供服务的,由通信管理局责令限期改正,最高可处 5000 元罚款。个人站点很少真被罚,但被请喝茶、约谈的情况并不罕见。
- 微信生态完全失联:公众号文章里的外链、微信支付商户、小程序后端域名,都强校验 ICP 备案号。没备案,这些功能用不了。
注:备案只针对「解析到中国大陆境内服务器」的域名。 如果你的服务器在境外(香港、台湾、海外),暂不需要 ICP 备案,但访问速度和稳定性会受影响;若站点仍面向中国大陆用户提供服务,建议根据当地规定评估是否完成公安联网备案(见第 6 章)。
ICP 备案号是工信部发放的,公安备案号是公安部发放的——两个号都要展示在页脚,缺一不可。流程是:
域名注册 → 实名认证 → 提交 ICP 备案 → 管局审核(7-20 个工作日) → 拿到 ICP 号 → 30 天内完成公安联网备案 → 拿到公安号 → 页脚展示踩坑提示:腾讯云备案系统里会显示两个编号,用途不同,不要混淆:
- 主体备案号:
粤ICP备2026XXXXXX号(不带序号后缀,标识备案主体)- 网站备案号:
粤ICP备2026XXXXXX号-N(带序号后缀,如-1、-2…,标识具体网站)页脚挂哪个号,按备案地管局要求来,各省并不统一:
- 广东省(本文作者所在地):管局要求页脚挂主体备案号(不带序号后缀)。
- 其他省份:管局一般要求挂网站备案号(带序号后缀,如
-1、-2),且不能只挂主体号。
第 2 章 · 准备阶段:三件套
备案前你需要准备三样东西:一台国内服务器、一个域名、一个人的实名身份。少一样都不行。
2.1 选服务器:腾讯云轻量 vs CVM
对个人开发者,腾讯云轻量应用服务器 是首选。理由:
| 维度 | 轻量应用服务器 | 云服务器 CVM |
|---|---|---|
| 价格 | 2 核 2G 1年 ≈ 99 元 | 同配置一年 ≈ 484 元 |
| 带宽 | 300GB月流量 4M带宽(够个人站用) | 按流量计费,容易超支 |
| 控制台 | 面向新手,开箱即用 | 专业向,参数多 |
| 备案支持 | 一致 | 一致 |
实操建议:选 轻量应用服务器 · 标准型 · 2 核 2G · 4M 带宽 · 系统盘 50G SSD · OpenCloudOS 8.8。
服务器买完后请立即在腾讯云控制台「实例」页找到并记录公网 IPv4 地址 (形如
124.221.xx.xx),后续所有备案填表都要用。

2.2 域名注册与实名认证
国内注册商必须用已工信部批准的(腾讯云 / 阿里云 / 华为云 / 新网等),境外注册商(Namecheap / GoDaddy)也支持转入后备案,但流程更绕。
关键点:
- 后缀限制:
.cn/.com.cn/.中国等必须做域名实名认证后才能备案;.com/.net注册后做 ICP 备案时也会被要求上传实名认证截图。 - 域名所有人必须与备案主体一致:你是个人备案,域名所有者就必须是你本人姓名,不能是公司、不能是别人的身份证。
- 域名有效期至少 3 个月:备案审核期间域名不能过期,否则直接驳回。
操作路径:腾讯云 DNS 解析控制台 → 域名注册 → 搜索想要的域名 →加入清单 → 填写所有者信息(身份证号 + 手机号 + 邮箱)→ 付款。 付款成功后立即在「域名管理」页提交实名认证,上传身份证正反面,1-3 个工作日通过。


第 3 章 · ICP 备案实战(核心章节)
3.1 个人备案 5 条红线
个人 ICP 备案审核严格,以下 5 条为硬性约束,违反任一项均可能被驳回:
- 禁止 UGC:网站不得提供用户注册、评论、投稿、论坛、留言板等用户可自主发布内容的功能。
- 禁止商业化表述:网站名称、简介、内容中不得出现「平台」「商城」「交易」「接单」「付费服务」「广告投放」等经营性词汇。
- 禁止新闻资讯:不得发布时事新闻、行业资讯、聚合报道等具有新闻属性的内容。
- 必须展示 ICP 号:备案号获取后,必须在网站底部显著位置展示,并链接至工信部备案查询页。
- 内容必须与备案描述一致:实际网站内容、网站名称、网站简介必须与备案填报信息保持一致。
3.2 站点合规改造的判断方法
红线知道了,但怎么快速判断自己的站点有没有违反?三步走:
第一步:跑敏感词扫描。在你的项目根目录执行:
# 以下以 Nuxt/Vue 项目为例,其他框架请换对应目录和扩展名grep -rn -E '社区|平台|商城|交易|投稿|合作|广告|会员|付费|教育|培训' \ --include='*.vue' --include='*.ts' \ pages/ components/ layouts/期望:没有任何匹配输出。如果有,逐个判断是不是真的违规("合作开发"作为代码注释通常无害,"广告位招租"作为页面文案就违规)。
第二步:审查 UGC 功能。检查你的站点有没有:
- 评论表单 / 留言板 / 论坛 / 投稿入口
- 第三方评论组件(Disqus / Gitalk / Twikoo 等)
- 用户个人主页 / 关注功能
如果有,关掉它们(代码层面 v-if="false" 或开关配置)。
第三步:核对外链。检查页脚的备案号链接是否指向 https://beian.miit.gov.cn/。错一个字符都不行。
作为案例,作者把自己的站点做了如下改造(仅供参考):
- 文章页评论功能用
v-if="commentsEnabled"关闭(开关置false)- About 页「合作 / 投稿」改为「技术交流」
- 微信群标题从「加入微信交流群」改为「微信联系」
- 首页统计文案去除"AI 问答采纳 + 次"
你的站点不必照搬这些动作,按上面三步自查即可。
3.3 腾讯云备案系统填报
入口:https://console.cloud.tencent.com/beian
按系统指引依次填:
- 主体信息:备案人姓名、身份证号、手机号、邮箱、应急电话
- 网站信息:网站名称、网站首页 URL(
https://你的域名)、服务类型(选"非交互式") - 主办者信息:同主体信息(个人备案)
- 接入信息:腾讯云服务器实例
- 上传资料:身份证正反面、域名证书、人脸核验视频

3.4 资料上传 + 人脸核验 + 电话核验 + 短信核验
身份证照片:正反面分别拍,四角完整、字迹清晰、不能反光。系统会自动 OCR 识别,所以不能太歪。
人脸核验:腾讯云会要求你用手机扫码进入小程序,按提示做几个动作(眨眼、点头)。不要戴帽子、不要戴口罩、背景干净。
电话核验:腾讯云会电话核验,询问相关备案信息。不要拦截骚扰或广告电话,否则会驳回。
短信核验:管局审核员会发短信到你的手机号,短信里有一个 6 位验证码,需要在 24 小时内回填到工信部系统。不要拦截备案短信。
3.5 管局审核:等待周期与驳回 TOP5
等待周期:
- 腾讯云初审:1-3 个工作日
- 管局终审:7-20 个工作日(广东管局通常较快,7-10 天)
- 整体:最快 7 天拿到号,最慢 20 天
驳回原因 TOP5(按出现频率):
| 排名 | 原因 | 解决 |
|---|---|---|
| 1 | 域名实名认证未通过 | 去域名注册商提交实名认证 |
| 2 | 应急电话与负责人手机号相同 | 换一个不同的号码 |
| 3 | 网站内容含敏感词 | 重新跑 grep 扫描 |
| 4 | 身份证照片模糊 | 重拍,确保四角完整 |
| 5 | 腾讯云核验电话被拦截 | 不要拦截骚扰或广告电话 |
驳回后系统会发短信告诉你原因,按提示修改后不需要重新提交,直接在原申请上改完重新走流程即可。
3.6 拿到备案号后第一件事
审核通过后,你会收到一条短信 + 站内信,包含 ICP 备案号。
重要:分清主体备案号和网站备案号。腾讯云备案系统会给你两个号:
- 主体备案号:
粤ICP备2026XXXXXX号(不带序号后缀,标识备案主体) - 网站备案号:
粤ICP备2026XXXXXX号-N(带序号后缀,如-1、-2,标识这个具体网站)
页脚挂哪个号,取决于备案地管局要求,各省并不统一:
- 广东省:管局要求页脚挂主体备案号(不带序号后缀),如
粤ICP备2026XXXXXX号。 - 其他省份:管局要求挂网站备案号(带序号后缀),如
京ICP备2026XXXXXX号-1,且通常不能只挂主体号。
本文作者在广东,所以页脚用的是主体备案号。如果你不在广东,请先确认你所在省份管局的具体规定,再决定页脚写哪个号。参考:腾讯云《备案号悬挂说明》(https://cloud.tencent.cn/document/product/243/61412)。
无论哪个省份,还有两个硬性要求:
- 备案号必须可点击:用
<a>超链接包裹备案号,链接到工信部备案管理系统https://beian.miit.gov.cn/。 - 链接必须有效:确保点击后能正常打开工信部备案查询页,供公众核对。
未按规定悬挂备案号,可能被责令改正并处以五千元以上一万元以下罚款。常见的不合规原因就是"备案号只是个纯文本、点不了",或链接指向错误。
为什么只有广东特殊:广东依据《广东省通信管理局关于网站备案号悬挂及链接有关事项的通知》要求挂主体备案号,目的是方便公众通过一个主体号查到该主体名下所有已备案网站的整体情况;其他省份执行的是工信部通用规定,要求挂当前这个网站的网站备案号。因此,如果一个主体下备案了多个网站,非广东的每个网站都要在页脚标明自己对应的、带序号的网站备案号。
拿到备案号后,接下来按顺序做:
- 第 4 章:把域名解析到服务器公网 IP
- 第 5 章:配置 HTTPS(SSL 证书 + Nginx)
- 第 6 章:30 天内完成公安联网备案
- 把 ICP 备案号和公安备案号一起展示在页脚
踩坑提示:管局要求备案号必须展示在网站首页底部。但不用急着现在写死代码—— 等域名解析、HTTPS、公安备案都完成后,一次性把两个号写进页脚更稳妥。

第 4 章 · 域名解析
拿到 ICP 备案号后,第一步是把域名解析到服务器公网 IP。
4.1 A 记录 vs CNAME 的选择
| 类型 | 用途 |
|---|---|
| A 记录 | 域名 → IPv4 地址(裸域 datayte.com 用这个) |
| CNAME | 域名 → 另一个域名(子域名 www.datayte.com 偶尔用) |
首次部署建议全用 A 记录,简单粗暴,便于排查。等要接 CDN 时再切 CNAME。
4.2 腾讯云 DNSPod 配置
入口:https://console.cloud.tencent.com/cns
添加两条记录:
| 主机记录 | 记录类型 | 记录值 |
|---|---|---|
| @ | A | 你的服务器公网 IP |
| www | A | 你的服务器公网 IP |

4.3 验证解析生效
在本地终端跑:
nslookup 你的域名nslookup www.你的域名两条都应返回你服务器的公网 IP。如果返回的是 CDN 节点 IP,说明你之前用过 CDN,缓存还在; 等几小时再试,或在 DNSPod 控制台临时把 TTL 调到 60 秒。
踩坑提示:DNS 解析有缓存。修改记录后,全球生效可能要 5-30 分钟。 不要刚改完就刷新浏览器看到旧结果就以为是配置错了。

第 5 章 · SSL 证书与 Nginx HTTPS(踩坑重灾区)
5.1 为什么必须 HTTPS
- SEO:百度 / Google 都明确表示 HTTPS 站点排名优先
- 微信生态:公众号文章外链、小程序后端域名强制 HTTPS
- 现代浏览器:Chrome 80+ 把 HTTP 站点明确标记"不安全"
5.2 腾讯云免费 DV 证书申请流程
入口:https://console.cloud.tencent.com/ssl
- 点击「申请免费证书」
- 域名绑定:填
你的域名(可同时勾选www.你的域名) - 验证方式:选「DNS 验证」(最简单)
- 系统会给你一条 TXT 记录,到 DNSPod 控制台添加
- 提交申请,等待腾讯云审核
注意:这里只是提交证书申请。审核通过、能下载证书之后,才是第 5.4 节的下载与上传。

5.3 DNS 验证不需要服务器提前开放 443 端口
前置条件:本节需要你已经在 DNSPod 完成第 4 章的 A 记录解析。如果还没解析,先回第 4 章做完。
腾讯云的免费 DV 证书支持多种验证方式,个人站长推荐选 DNS 验证,流程如下:
- 在 SSL 证书控制台申请时,验证方式选「DNS 验证」
- 系统会生成一条 TXT 记录(含主机记录和记录值)
- 到 DNSPod 控制台添加这条 TXT 记录
- 等待 DNS 生效,腾讯云会自动检测
重要:DNS 验证只检查 DNS 记录,不要求你的服务器提前开放 80 或 443 端口。也就是说,你完全可以在 Nginx 还没配 HTTPS 之前就申请并通过证书验证。等证书签发后,再按 5.4 节下载并配置到 Nginx 即可。
如果你选择的是「HTTP 验证」,才需要服务器 80 端口可达,并按要求放置验证文件。
# 检查 TXT 记录是否已全球生效(可选)# 主机记录以腾讯云申请页显示的那条为准(不一定是 _acme-challenge)nslookup -type=TXT 主机记录.你的域名踩坑提示:腾讯云的 DNS 验证超时一般是 24 小时。如果反复失败,先检查 DNSPod 里的 TXT 记录主机记录、记录值是否填对,以及是否已全球生效,不要急着重试。
5.4 证书下载与上传
DNS 验证通过后,在 SSL 证书控制台点击「下载」,选择「Nginx」格式,会得到一个 zip 包,解压后得到两个文件:
| 文件 | 用途 |
|---|---|
你的域名_bundle.crt | 证书(含域名证书 + 中间证书,不要拆开) |
你的域名.key | 私钥 |
将这两个文件上传到服务器 /etc/nginx/ssl/ 目录:
# 在本地执行(把文件上传到服务器)scp 你的域名_bundle.crt root@你的服务器IP:/etc/nginx/ssl/scp 你的域名.key root@你的服务器IP:/etc/nginx/ssl/# 在服务器上收紧私钥权限(防止被其他用户读取)chmod 600 /etc/nginx/ssl/你的域名.key踩坑提示:腾讯云下载的
.crt文件里已经包含了完整证书链(域名证书 + 中间证书合并在一起),直接用这个_bundle.crt即可,不要再拆开成单独的根证书和中间证书。

5.5 完整 server block
推荐把配置放在 /etc/nginx/conf.d/你的域名.conf:
# HTTP → HTTPS 跳转server { listen 80; server_name 你的域名 www.你的域名; return 301 https://$host$request_uri;}# HTTPS 主站server { listen 443 ssl; server_name 你的域名 www.你的域名; root /usr/share/nginx/html; index index.html; ssl_certificate /etc/nginx/ssl/你的域名_bundle.crt; ssl_certificate_key /etc/nginx/ssl/你的域名.key; ssl_protocols TLSv1.2 TLSv1.3; access_log /var/log/nginx/你的域名.access.log; error_log /var/log/nginx/你的域名.error.log; # 静态文件 location / { try_files $uri $uri/ /index.html; } # 后端 API 反向代理,如果没有后台服务可不配 location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffering off; # SSE 流式必须 proxy_read_timeout 300s; }}踩坑提示:80 跳转必须用
301(永久)而不是302(临时)。 301 会被浏览器缓存,下次访问直接走 HTTPS; 302 每次都要去服务器跳转一次,对 SEO 也不友好。
5.6 Nginx 调试常用命令
# 1. 测试配置语法(关键!)nginx -t# 2. 重载配置(不中断服务)nginx -s reload# 3. 看错误日志(启动失败时第一件事)tail -f /var/log/nginx/你的域名.error.log# 4. 直接检查证书文件ls -la /etc/nginx/ssl/踩坑提示:
nginx -t是救命命令。每次改完配置都先跑它, 确认语法 OK 再 reload,否则一个括号错了整个 Nginx 起不来。
5.7 Chrome 显示"不安全"的排查法
正式证书替换完成后,用浏览器访问 https://你的域名/,如果仍然显示"不安全",按以下顺序排查:
第一步:先清浏览器缓存(最容易被忽略)
浏览器会缓存旧证书,即使服务端已换成正式证书,浏览器可能仍在用缓存中的自签证书。
- 彻底清理浏览器缓存(不只是历史记录)
- Chrome 地址栏输入
chrome://settings/clearBrowserData - Edge 地址栏输入
edge://settings/clearBrowserData - 勾选「缓存的图片和文件」→ 「全部时间」→ 清除
- 或者用快捷键
Ctrl+Shift+Del
- Chrome 地址栏输入
- 完全退出并重新打开浏览器(不是关标签页,是整个进程退出)
- 任务栏右键 Chrome 图标 → "关闭" 或
Ctrl+Shift+Q(部分版本) - 重新启动 Chrome 再访问
- 任务栏右键 Chrome 图标 → "关闭" 或
作者本人就是在替换正式证书后,Chrome 一直显示"不安全",清缓存 + 关浏览器重开后才解决。 走了 1 小时冤枉路才发现是缓存问题。先做这步,能省掉 90% 的排查时间。
如果清缓存重开后仍然"不安全",再走下面两步。
第二步:验证证书本身(看证书内容对不对)
openssl x509 -in /path/to/你的域名_bundle.crt -noout -subject -issuer -dates期望:
- subject 含
CN = 你的域名 - issuer 含
TrustAsia - notBefore < 今天 < notAfter
如果 issuer 是你域名自己,说明还是自签证书,文件没替换对。
第三步:再看握手时的链路(看服务器实际发的链)
echo | openssl s_client -connect 你的域名:443 -servername 你的域名 2>/dev/null | grep -E "Verify return code"期望:Verify return code: 0 (ok)
如果返回 unable to verify the first certificate,证书链不完整,检查 bundle 里是不是少了中间证书。
第四步:最后看客户端(看 Chrome 实际报错)
无痕窗口打开 https://你的域名/,按 F12 → Console,看具体错误码:
NET::ERR_CERT_AUTHORITY_INVALID→ 自签或不受信任 CANET::ERR_CERT_DATE_INVALID→ 时间不在证书有效期内NET::ERR_CERT_COMMON_NAME_INVALID→ 域名不匹配
第 6 章 · 公安联网备案(30 日时限)
重要时限:拿到 ICP 备案号后,30 日内必须完成公安联网备案,否则管局可能注销你的 ICP 备案号。
6.1 准备资料
开始公安联网备案前,先把以下资料准备好,避免填到一半到处找:
| 资料 | 说明 |
|---|---|
| 域名证书 | 域名注册商后台下载,证明域名属于你 |
| 身份证正反面 | 四角完整、字迹清晰,与 ICP 备案一致 |
| 手持身份证照 | 部分情况会要求上传 |
| ICP 备案号 | 备案成功后拿到的备案号(广东用主体号,其他省份用网站号,与页脚展示一致) |
| 服务器公网 IP | 备案域名指向的服务器 IPv4 地址 |
| 应急联系电话 | 能联系到你的手机号 |
6.2 入口与流程概览
首次访问要先注册账号(用手机号 + 邮箱),然后按顺序走:
- 填写开办者主体信息(姓名、身份证号)
- 添加网站信息(域名、ICP 备案号、服务器 IP 等)
- 提交审核(一般 3-7 个工作日)
- 审核通过后拿到公安备案号(
粤公网安备44XXXXXXXXXXXX号) - 从系统下载公安备案图标
- 把备案号和图标一起展示在网站页脚
注:腾讯云支持将 ICP 备案信息同步到公安部备案系统,能少填一部分字段。但公安备案仍需单独提交审核,不能直接替代。

6.3 审核通过与公安备案号查询
提交后约 3-7 个工作日,公安部备案系统会:
- 发短信通知
- 在系统首页显示你的公安备案号
查询入口:https://beian.mps.gov.cn/
拿到公安备案号后,才能继续下一步:下载图标并展示到页脚。
踩坑提示:公安备案号和 ICP 备案号是两套独立的号,分别由公安部、工信部发放。 两个号都要展示在页脚,缺一不可。
6.4 页脚展示:图标 + 编号
审核通过后,公安部备案系统会提供备案图标下载链接。下载后得到一个 .png 文件,建议改名为 beian-icon.png,放到网站静态资源目录(如 Nuxt 的 public/ 目录),确保能通过 https://你的域名/beian-icon.png 访问到。
ICP 备案号也要放页脚,做成可点击链接指向工信部备案系统(广东用主体号,其他省份用网站号,见 3.6 节):
<a href="https://beian.miit.gov.cn/">粤ICP备2026XXXXXX号</a>公安备案号在页脚的写法见下。
格式硬要求:图标在前,编号在后。
正确效果:
[图标] 粤公网安备44XXXXXXXXXXXX号注:
44XXXXXXXXXXXX为示例编号,请替换为你从公安部备案系统获得的实际编号。
正确写法:
<a href="https://beian.mps.gov.cn/#/query/webSearch?code=44XXXXXXXXXXXX"> <img src="/beian-icon.png" alt="" width="16" height="16" /> 粤公网安备44XXXXXXXXXXXX号</a>踩坑提示:作者第一次提交时忘了加图标,被打回要求补图。 建议:公安备案审核通过后先下载图标,再写页脚代码,避免来回修改。
附录 A · 速查命令表
DNS 验证
nslookup 你的域名nslookup www.你的域名证书查看
openssl x509 -in bundle.crt -noout -subject -issuer -datesecho | openssl s_client -connect 你的域名:443 -servername 你的域名 2>/dev/null | grep -E "Verify return code"Nginx 调试
nginx -tnginx -s reloadtail -f /var/log/nginx/你的域名.error.log附录 B · 名词解释
| 术语 | 含义 |
|---|---|
| DNS | 域名系统,把域名翻译成 IP |
| A 记录 | 域名 → IPv4 地址 |
| CNAME | 域名 → 另一个域名(别名) |
| TTL | DNS 缓存时间(秒) |
| TLS | 传输层安全协议(HTTPS 的 S) |
| SSL | TLS 的旧称(现在混用) |
| DV 证书 | 域名验证型 SSL 证书(最便宜、个人站长都用这个) |
| OV / EV 证书 | 组织 / 扩展验证型证书(贵、需要企业资质) |
| SNI | 服务器名称指示,让一个 IP 托管多个 HTTPS 站点 |
| CAA | DNS 记录,指定哪些 CA 可以给你的域名发证书 |
| ICP 备案 | 工信部要求的网站备案 |
| 公安备案 | 公安部要求的联网备案(30 天内) |
| SSG | Static Site Generation,静态站点生成 |
| SSR | Server-Side Rendering,服务端渲染 |
| CDN | Content Delivery Network,内容分发网络 |
| SSE | Server-Sent Events,单向流式推送(聊天常用) |