很多自托管服务的问题不在“能不能访问”,而在“暴露以后能不能长期维护”。
Cloudflare Tunnel 的好处是:源站不需要开放公网端口。服务器只要能主动连出 Cloudflare,外部访问就可以通过域名进入服务。
为什么适合家庭服务器和小型 VPS
传统发布方式通常需要:
- 开放 80/443 端口
- 配置反向代理
- 申请和续期证书
- 维护防火墙规则
- 面对公网扫描和爆破
使用 Tunnel 后,源站服务可以只监听本机:
```text 127.0.0.1:8088 ```
这样即使服务器公网 IP 被扫到,Web 服务本身也不会直接暴露。
推荐路径规划
如果一个域名下同时跑前台和后台,路径设计要清楚:
| 路径 | 用途 |
|---|---|
| `/` | 博客前台 |
| `/posts/*` | 文章页 |
| `/admin/*` | 管理后台 |
| `/auth/`、`/server/`、`/items/*` | 后台 API |
前台不要贪心接管所有路径,否则后台 SPA 的资源和 API 很容易被吞掉。
常见坑
1. 后台静态资源 MIME 错误
如果 JS 文件请求到了 HTML,浏览器会报类似错误:
```text Expected a JavaScript module script but the server responded with a MIME type of text/html ```
这通常是路径被错误转发到了前台首页。
2. SPA base path 错误
很多后台管理系统会生成类似:
```html
如果代理又额外加了一层 `/admin`,就可能变成 `/admin/admin/assets/…`。
3. API 路由遗漏
不要只转发 `/admin/*`,很多后台 API 可能在根路径,例如:
```text /auth /server /items /users /files ```
我的建议
最稳的做法是:
- 前台只接管明确的博客路径;
- 其他路径默认交给后台系统;
- 源站只监听 `127.0.0.1`;
- 所有外部访问都走 Cloudflare Tunnel。
这样配置简单,后期排错也更清楚。