最近帮朋友折腾个人博客,发现不少人卡在同一个地方:手里没有云服务器,又不想一上来就花钱买主机,最后连 HTTPS 都没配明白,地址栏一直显示“不安全”。这次正好拿 TinkerHost 免费主机做了一次完整实测,把 5G 空间、SSL 证书、子域名绑定、博客安装、常见报错全部跑通了一遍。
这篇文章会把整套流程写清楚,从“免费主机到底是什么”开始,一直到“用 Typecho 搭好一个可以访问的博客”,中间涉及 SSL 证书申请、DNS 解析、伪静态配置、常见 SSL 报错排查。无论你是刚接触建站的新手,还是换过多个主机商、想快速了解免费空间能力的开发者,都可以按这篇文章的步骤操作一遍。
1. 背景与核心概念
1.1 什么是免费主机,它和云服务器有什么区别
免费主机,简单理解就是服务商免费提供的一块网站空间,通常会包含 Web 服务、数据库、FTP/SFTP 上传能力。访问者通过域名访问时,请求会由主机的 Web 服务处理,再把博客页面返回给浏览器。
它和云服务器的区别,可以从下面几点理解:
| 对比项 | 免费主机 | 云服务器 |
|---|---|---|
| 成本 | 免费或极低价 | 按配置按月/年付费 |
| 操作系统权限 | 一般没有 SSH 或仅有受限 SSH | 有完整 root/管理员权限 |
| 软件安装 | 只能使用面板已集成的环境 | 可自由安装 Nginx、MySQL、Redis 等 |
| 适用场景 | 个人博客、静态站、学习测试 | 生产项目、API 服务、复杂应用 |
| 运维难度 | 低,面板点几下即可 | 高,需要自己管理环境与安全 |
你不需要把免费主机想象成“缩水版服务器”。如果目标是搭建个人博客,它反而比一台空服务器更方便,因为 Web 环境、数据库、SSL 申请入口通常都已经内置好了。
1.2 5G 空间、SSL 证书、子域名分别解决什么问题
TinkerHost 提供的 5G 空间,对个人博客来说是一个比较宽裕的起步容量。以 Typecho 为例,博客程序本身只有 10MB 左右,加上主题、插件、文章配图,只要不大量上传原图,5G 空间足够运行很久。
SSL 证书解决的是“数据传输加密”问题。浏览器和服务器之间有了 HTTPS 加密后,用户输入的内容、登录密码、评论信息不会被中间人直接读取。地址栏里的小锁图标,是今天用户判断一个网站是否可信的重要信号。
子域名解决的是“站点结构规划”问题。你可以把主域名example.com用来做导航页,把blog.example.com作为博客地址。这样以后想在同一台主机上增加其他应用,比如docs.example.com、demo.example.com,只需要继续添加子域名即可,不用重新买主机。
1.3 为什么适合搭建个人博客
自建个人博客和学习写技术文章是天然搭配。通过免费主机的完整建站过程,你会接触到域名解析、目录结构、数据库、PHP 环境、HTTPS 证书、伪静态等一整套 Web 基础概念。
更重要的是,免费主机往往自带免费 SSL 证书申请入口,让新手免去“先买服务器,再配证书,配不好还不能上线”的挫败感。先用免费主机把博客跑起来,之后再迁移到云服务器,成本和学习曲线都更平滑。
不过也要提醒一句:免费主机通常有资源限制,比如 CPU 限制、访客数量限制、存储空间限制,适合个人博客、学习项目和阶段性 Demo,不适合承载电商、支付、大量真实用户业务。后面第 8 节会专门讲使用边界。
2. 环境准备与前置条件
2.1 需要的账号和材料
在开始之前,先确认下面这些材料和账号是否准备好:
- 一个 TinkerHost 账号(按官网注册流程激活即可)
- 一个自己的域名(也可以先使用免费主机提供的二级域名体验,但后续做 SSL 和子域名时,建议使用自己的域名)
- 域名 DNS 管理权限(在域名注册商处可以修改解析记录)
- 一个 FTP/SFTP 客户端,例如 FileZilla
- 一个文本编辑器,用于修改配置文件
如果你还没有域名,建议先注册一个。个人博客使用.com、.cn、.top、.xyz等常见后缀都可以,域名是后续 SSL 证书与子域名配置的基础。
2.2 选择域名:主域名与子域名的规划
在配置之前,先决定博客放在哪个域名下。
一般来说,推荐使用blog.你的域名.com作为博客地址。原因有两个:
- 主域名可以后续做个人主页、关于页、导航页。
- 如果以后更换博客程序,子域名彼此独立,不会影响主站。
比如你拥有example.com,那么博客地址可以规划为blog.example.com。后面配置 SSL 时,可以单独为blog.example.com申请证书,也可以申请同时覆盖example.com和blog.example.com的通配证书,根据主机面板支持程度选择即可。
2.3 本地工具准备
本地需要准备:
- 浏览器:建议用 Chrome 或 Edge,方便查看“不安全”提示和开发者工具中的 Console/Network 信息。
- FileZilla:用于上传博客程序压缩包和解压后的文件。
- 记事本/VSCode:用于修改
.htaccess、config.inc.php等文件,注意不要用 Word 编辑代码文件,否则可能引入不可见字符。 - 命令行工具:Windows 系统可用 CMD 或 PowerShell,macOS/Linux 可直接用终端,用来执行 DNS 查询和证书检查命令。
3. 核心原理拆解:SSL 证书和子域名
3.1 SSL 证书是怎么工作的
SSL 证书的本质是“证明服务器身份 + 建立加密通道”。
当用户访问https://blog.example.com时,浏览器和服务器会这样协作:
- 浏览器向服务器发起 HTTPS 请求。
- 服务器返回自己的 SSL 证书,证书里包含域名、公钥、证书有效期、签发机构等信息。
- 浏览器检查证书是否可信:签发机构是否被系统信任、域名是否匹配、是否在有效期内。
- 如果检查通过,浏览器使用服务器公钥协商出会话密钥,后续所有数据传输都用这个密钥加密。
常见的免费 SSL 证书来源有两种:一种是面板内置的 Let's Encrypt 自动签发,完全免费,有效期通常为 90 天,面板会自动或定期续期;另一种是云厂商提供的免费证书,需要在控制台申请并手动导入服务器。
3.2 免费证书从哪里来:Let's Encrypt 模式
Let's Encrypt 是目前主流的免费证书签发机构。它支持通过 ACME 协议自动验证域名归属,验证通过后签发证书。
免费主机面板一般会集成 Let's Encrypt 客户端。你在面板里选择需要开启 HTTPS 的域名,点击申请,面板会自动完成验证并配置证书。这个过程中,你需要保证域名解析已经指向这台免费主机,否则验证会失败,报错信息类似“no required ssl certificate was sent”“DNS problem”等。
证书续期也是自动的。激活自动续期后,只要域名解析一直正确、主机服务正常,证书接近到期时会自动更新。如果到期后证书没有更新,通常可以从面板日志或邮件通知中找到原因。
3.3 子域名与 DNS 解析原理
子域名不是另一个独立网站,而是当前域名下的一个层级分支。
在 DNS 系统中,blog.example.com和example.com是两条不同记录。要让blog.example.com访问到这台免费主机,需要添加一条解析记录,把blog这个前缀解析到主机的 IP 地址。
常见解析类型有两种:
| 类型 | 填写内容 | 适用场景 |
|---|---|---|
| A 记录 | 主机 IP 地址 | 主机商提供一个固定 IP 时 |
| CNAME 记录 | 主机的别名域名 | 主机商提供一个别名地址时 |
免费主机通常在后台告诉你应该使用哪种解析方式。如果面板提示“将blog.example.com解析到xxx.tinkerhost.com”,就用 CNAME;如果给出一个 IP,就用 A 记录。
DNS 解析不是即时生效的。受本地 DNS 缓存、运营商 DNS 更新时间影响,可能需要几分钟到几小时不等。可以通过ping blog.example.com或nslookup命令检查解析是否已经生效。
4. TinkerHost 免费主机搭建全流程
4.1 注册与激活主机
TinkerHost 新用户注册后,一般会进入控制台或服务列表页。找到免费主机套餐,按提示完成激活。
激活过程中,你会得到一组重要信息:
- 主机的临时访问地址或 IP
- FTP/SFTP 账号和密码
- 数据库地址、数据库用户名、数据库密码
- 主机面板登录地址
这些信息请先保存到本地笔记里,后面上传文件和配置博客时会反复用到。
4.2 绑定主域名并添加子域名
拿到主机环境后,需要把域名绑定到主机上。绑定域名的具体名称,在面板里可能叫“域名管理”“附加域”“Alias Domain”“Subdomain”等,不同的免费主机面板说法不一样,但逻辑相同:让这台主机知道它要处理哪些域名的请求。
操作思路如下:
- 在主域名管理中,绑定
example.com。 - 在子域名管理中,添加
blog,对应目录一般会自动设置为public_html/blog或类似的子目录。 - 如果面板允许,把
blog.example.com单独绑定到public_html/blog目录。
添加子域名的好处是:以后博客文件放在public_html/blog目录下,不会和主站文件混在一起,避免互相干扰,也方便单独备份。
4.3 添加 DNS 解析记录并等待生效
接下来需要到你的域名注册商控制台,为blog添加解析记录。
以添加 A 记录为例:
主机记录:blog 记录类型:A 记录值:你从主机后台获取的 IP 地址 TTL:默认即可如果主机商提供的是别名地址,则添加 CNAME 记录:
主机记录:blog 记录类型:CNAME 记录值:主机商提供的别名地址 TTL:默认即可添加完解析记录后,可以等待几分钟,然后执行下面的命令检查:
ping blog.example.com如果返回的 IP 地址与主机面板中显示的一致,说明解析已经生效。
也可以使用nslookup查询解析结果:
nslookup blog.example.com这一步非常重要。如果你跳过解析直接申请 SSL 证书或访问博客,会出现域名无法打开、证书验证失败等情况。
4.4 创建数据库
如果你的博客程序是 Typecho 或 WordPress,需要先创建数据库。
登录主机控制面板中的数据库管理工具(常见的是 phpMyAdmin),新建一个数据库。以 Typecho 为例,建议使用 utf8mb4 字符集:
CREATE DATABASE typecho DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;如果面板只支持通过界面创建,就选择“创建数据库”,输入数据库名,选择utf8mb4字符集即可。创建完成后,记录数据库名、数据库用户名、数据库密码、数据库主机地址。不同类型的免费主机,数据库主机地址可能是localhost,也可能是一个单独的数据库服务器地址,以面板提示为准。
5. 申请 SSL 证书并强制 HTTPS
5.1 在面板中为子域名申请 SSL 证书
打开主机面板,找到 SSL/TLS 相关设置。通常可以勾选需要启用 HTTPS 的域名,然后点击申请或开启。
这里需要注意两点:
- 如果面板支持自动签发,先确认
blog.example.com已经解析到这台主机,否则验证会失败。 - 证书申请成功后,一般不需要手动修改任何服务器配置,面板会自动把证书部署到对应的域名服务上。
如果面板支持同时申请多个域名,可以把example.com和blog.example.com都选中。不选主域名也可以,只给博客子域名申请证书也完全够用。
5.2 配置 .htaccess 强制跳转 HTTPS
申请到 SSL 证书后,建议开启强制 HTTPS 跳转。这样用户访问http://blog.example.com时,会自动跳转到https://blog.example.com,避免出现“http 可以打开,https 打不开”或“两种协议并存导致内容重复”的情况。
在博客根目录public_html/blog下新建或编辑.htaccess文件,加入以下内容:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule>这段规则的含义是:当请求不是 HTTPS 时,301 跳转到对应的 HTTPS 地址。
如果博客使用 Nginx 而非 Apache,就需要在站点配置中增加跳转规则,具体写法以免费主机的 Web 服务类型为准。
5.3 用 openssl 命令验证证书状态
配置完成后,可以用命令行检查证书是否生效、是否在有效期内。
echo | openssl s_client -connect blog.example.com:443 -servername blog.example.com 2>/dev/null | openssl x509 -noout -subject -dates -issuer预期输出类似:
subject=CN = blog.example.com notBefore=Feb 20 00:00:00 2025 GMT notAfter=May 21 00:00:00 2025 GMT issuer=C = US, O = Let's Encrypt, CN = R10如果subject中的域名和访问域名一致,notAfter时间在未来,说明证书配置没有问题。
这一步不建议跳过。很多人遇到“浏览器提示不安全”“证书无效”的问题,根源就是证书域名和访问地址不匹配,或者证书根本没部署成功。
6. 安装个人博客程序:以 Typecho 为例
6.1 为什么推荐 Typecho 而不是 WordPress
WordPress 功能全面,主题和插件生态非常丰富,但对免费主机的资源占用也更高。Typecho 是一个轻量级 PHP 博客程序,安装包小,运行速度快,后台简洁,非常适合个人博客和免费主机环境。
选择 Typecho 的另一个好处是:它不强制绑定复杂的功能模块,写文章、传图片、分类、标签、评论这些核心功能都够用。等以后你迁移到云服务器,想换 WordPress 或者静态博客,也不会有什么负担。
6.2 下载、上传与安装
首先去 Typecho 官网下载最新版压缩包。下载完成后,解压得到build目录,里面的文件就是博客程序。
用 FileZilla 连接免费主机的 FTP/SFTP,把解压后的文件上传到public_html/blog目录。上传完成后,在浏览器中访问:
http://blog.example.com/install.php如果看到 Typecho 的安装引导页,说明环境正常。
安装过程中需要填写数据库信息:
- 数据库地址:以面板提示为准,可能是
localhost - 数据库端口:默认 3306,也可能为空
- 数据库用户名:步骤 4.4 中记录的用户名
- 数据库密码:步骤 4.4 中记录的密码
- 数据库名:步骤 4.4 中创建的数据库名
填写完成后继续,设置管理员账号和密码,安装就完成了。
安装完成后,建议删除install.php文件,避免被重新安装或恶意利用:
rm public_html/blog/install.php如果你不使用命令行,也可以在 FileZilla 中直接删除该文件。
6.3 配置伪静态与固定链接
Typecho 默认的 URL 带有?p=123之类的参数,不够美观。你可以通过“固定链接”功能,把文章链接改成https://blog.example.com/archives/文章名.html这种形式。
首先,在public_html/blog下创建.htaccess文件。如果这个文件在安装后已经存在,直接编辑覆盖即可。Typecho 官方推荐的伪静态规则是:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] </IfModule>然后进入 Typecho 后台:“设置” -> “永久链接”,选择你喜欢的 URL 格式,保存即可。
保存后,访问一篇文章看看 URL 是否生效。如果出现 404,优先检查.htaccess是否正确上传、mod_rewrite是否开启、RewriteBase是否与博客安装目录匹配。
7. 常见问题与 SSL 报错排查
7.1 SSL 证书常见错误对照表
下面这张表整理了搭建博客过程中容易遇到的 SSL 相关报错,基本覆盖了常见的排查场景。
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| “不安全”或“您的连接不是私密连接” | 证书未部署、域名不匹配、证书过期、系统时间错误 | 检查证书是否在有效期内,确认访问域名和证书域名一致 |
| “no required ssl certificate was sent” | 服务器没有返回对应证书,或证书未正确绑定到当前域名 | 在面板中重新申请/部署证书,确认域名已绑定 |
| “invalid ssl certificate” | 证书链不完整,或证书被浏览器判定为不可信 | 查看证书链是否完整,必要时重新签发 |
| “客户端和服务器不支持一般 SSL 协议” | 客户端太旧,或服务端 TLS 版本与客户端不兼容 | 升级浏览器或系统,调整面板 TLS 版本选项 |
| 设置了 HTTPS 但访问 http 时不跳转 | 没有添加强制跳转规则 | 添加.htaccess跳转规则或站点配置跳转 |
| 打开 HTTPS 页面后 CSS/图片加载失败 | 页面中仍引用了 http 链接,出现混合内容 | 把资源链接改为相对路径或 https 链接,开启全站 HTTPS |
| SSL 证书过期 | 自动续期失败,或面板未开启自动续期 | 检查域名解析、续期日志,手动续期 |
7.2 DNS 解析不生效怎么办
如果访问blog.example.com一直打不开,先检查域名解析。
本地执行:
nslookup blog.example.com如果返回结果不是你配置的 IP,可能是本地 DNS 缓存了旧记录。可以换网络或使用其他 DNS 服务器再试。如果确认解析正确,仍然打不开,再检查是否已经在主机面板中绑定了blog.example.com。
排查顺序建议是:
- 域名解析是否存在。
- 解析结果是否正确。
- 主机面板中是否绑定该域名。
- 博客文件是否上传到了对应目录。
- 目录权限和入口文件是否存在。
7.3 http 访问正常,https 打不开或样式丢失
这种情况一般分成两种。
第一种是 https 完全打不开,说明证书没有部署成功,或者 Web 服务没有监听 443 端口。可以回到面板重新部署证书,然后检查证书是否绑定到blog.example.com。
第二种是 https 能打开,但页面样式非常乱,图片也不显示。打开浏览器控制台,多半会看到“Mixed Content”提示,意思是页面里混用了 http 资源。
解决办法是让博客全站使用相对路径或 https 链接。Typecho 后台可以设置站点地址为https://blog.example.com,然后检查主题中的资源引用方式。如果主题本身写死了 http 链接,就需要在数据库或主题文件中替换。
注意:修改数据库中的站点地址属于敏感操作,应该先备份数据库,再执行替换。
7.4 免费主机常见限制说明
免费主机的限制有时候比报错更隐蔽,需要在线上传文件时注意:
- 单文件大小限制:部分免费主机的 PHP 上传限制为 2MB 或 10MB,如果上传大图片或主题压缩包失败,优先检查这个限制。
- 流量限制:免费套餐通常有每月流量上限,超过后站点可能被暂停或限速。
- 进程限制:如果博客安装了较多插件,可能触发 CPU 超限。
- 到期回收:长期不登录的免费主机可能被回收。建议至少每月登录一次后台,并且定期备份网站文件和数据库。
遇到上传失败时,不要反复重试,先查看错误信息。大多数免费主机面板都会在文件管理器或错误日志中给出明确提示。
8. 最佳实践与工程建议
8.1 免费主机的安全底线
使用免费主机,要始终记住“最小权限、最小暴露”的原则。
- 账号密码不能短,不要和其他网站共用密码。
- 安装完博客后,删除
install.php文件。 - 后台管理员路径不要用默认的
/admin太容易被扫描时,可以根据主题或程序调整后台入口。 - 不把数据库导出文件、备份压缩包放在网站根目录下,否则可能被直接下载。
- 不要在免费主机上保存用户密码、支付信息、身份证等敏感数据。免费主机的安全等级、合规能力有限,不要拿它当生产服务器用。
8.2 备份策略
免费主机虽然能用,但没有谁能保证一直稳定。个人博客的备份,建议至少做到“定期下载到本地”。
备份内容分为两部分:
- 网站文件:通过 FileZilla 下载
public_html/blog目录。 - 数据库:在 phpMyAdmin 中导出 SQL 文件,或者使用面板的备份功能。
如果博客日更不多,每周手动备份一次即可。如果不想手动操作,也可以考虑写一个本地脚本,定时通过 FTP 下载文件备份到本地磁盘或云对象存储。注意,任何涉及自动备份的脚本,都应该先在测试环境中验证,再放到生产环境运行。
8.3 性能与小空间优化
5G 空间听起来不小,但如果图片直接原图上传,很快就会用满。可以从这几个方面控制:
- 文章配图先压缩再上传,宽度一般控制在 1200px 以内即可。
- 开启 Typecho 的页面缓存插件,减少每次访问时动态执行 PHP 的压力。
- 优先使用轻量主题,少装插件。
- 清理旧版本备份文件,不要在主机里堆积无用的压缩包。
另外,尽量不要把媒体库里所有图片原图长期保留在免费主机上。图片多的时候,可以转移到对象存储或图床,博客里只保留引用链接。
8.4 后续迁移路线
免费主机不是终点。当博客文章量增多,或者你对网站速度和稳定性有更高要求时,可以考虑迁移到云服务器。
迁移时,核心工作是把网站文件和数据库完整导出,然后在新的服务器上搭建同样的 Web 环境,再导入文件和数据库。迁移过程中需要关心的因素包括:
- PHP 版本是否兼容当前博客程序。
- 数据库版本和字符集是否一致。
- 伪静态规则是否需要调整。
- SSL 证书需要重新申请或导入。
- 如果使用的是云厂商免费证书,要注意证书到期后需要手动续期,不能和 Let's Encrypt 的自动续期混淆。
如果你没有太多服务器运维经验,建议先在一台最低配置的云服务器上完整演练一遍迁移流程,再处理正式环境的切换。这样即使出现问题,也不会影响现有博客访问。
最后想说的是,免费主机也好,云服务器也好,搭建个人博客最核心的价值不是“得到一个网址”,而是在建站过程中把域名、DNS、HTTPS、Web 服务、数据库这些前端开发中接触不到的知识补齐。你可以从 TinkerHost 的一台 5G 空间免费主机开始,先把博客跑起来,再把 HTTPS 和备份意识养成习惯,之后换到任何服务器,都不会觉得陌生。
如果这篇文章帮到了你,可以收藏备用,也欢迎在评论区分享你在免费主机上遇到的 SSL 或子域名问题。