选择外部访问方式
SetFN SpaceBuilder 安装后即可在同一网络中直接使用。如果还要从办公室外或移动网络访问,就需要在服务器与外部互联网之间建立一条安全的连接路径。
初次接触可能觉得复杂,但目的很简单。
https://space.example.com
↓
外部访问连接方式
↓
http://localhost:8510
使用 Cloudflare Tunnel 可以相对简单地搭建这条连接。无需将服务器端口直接暴露到互联网,HTTPS 证书和域名连接也由 Cloudflare 处理。
先确认是否需要外部访问
如果只在同一办公室或 Wi-Fi 内使用,则不需要配置外部访问。请参考 查看空间访问地址,使用内网 IP 地址访问。
以下情况需要配置外部访问。
- 在家里或出差地访问空间
- 使用移动数据访问
- 向外部合作方或客户发送共享链接
- 多个营业场所或网络共用一个空间
应该选择哪种方式?
| 方式 | 推荐对象 | 优点 | 需要自行管理的项目 |
|---|---|---|---|
| Cloudflare Tunnel(推荐) | 首次配置外部访问的用户、没有固定公网 IP 的环境 | 无需开放路由器端口、不公开源服务器 IP、HTTPS 和域名连接简单 | Cloudflare 账户、域名、cloudflared 服务 |
| Caddy 反向代理 | 自行运营服务器并希望保持配置简单的用户 | 配置简单、HTTPS 证书自动签发与续期 | DNS、公网 IP、防火墙、端口转发、Caddy |
| NGINX 反向代理 | 已有 NGINX 基础设施或需要精细控制的组织 | 配置灵活性高、易于与现有 Web 基础设施集成 | DNS、证书、防火墙、端口转发、NGINX |
| 路由器端口转发 | 测试环境或能够自行管理网络的用户 | 无需额外隧道服务即可直接连接 | 公网 IP、路由器、防火墙、HTTPS、安全更新 |
| VPN·专用网络 | 只允许组织成员私密访问的组织 | 服务不暴露在公共互联网上 | VPN 服务器和用户终端设置 |
轻松理解隧道与反向代理
隧道
在服务器内部运行的 Connector 会先与外部服务建立安全连接。外部请求沿着这条连接反向到达服务器。
在 Cloudflare Tunnel 中,cloudflared 从服务器向 Cloudflare 建立出站连接。因此在一般环境下,无需向外部开放路由器的 80·443·8510 端口。
用户 → Cloudflare → 已建立连接的 Tunnel → SetFN :8510
反向代理
Caddy 或 NGINX 先接收外部请求,再转发给内部的 SetFN 服务。用户无需知道 8510 端口,直接通过 https://space.example.com 访问即可。
用户 → Caddy 或 NGINX :443 → SetFN :8510
反向代理的优点是可以在一处集中管理 HTTPS 终止、域名分流、访问日志、请求限制等功能。
推荐方式:Cloudflare Tunnel
Cloudflare Tunnel 可以把内部服务连接到公共域名,同时不要求源服务器拥有可公开路由的 IP 地址。由于 cloudflared 主动向 Cloudflare 网络发起连接,还可以减少绕过防护直接访问源服务器的路径。
首次配置时可以期待以下效果。
- 无需在路由器管理页面设置端口转发
- 受动态公网 IP 或运营商环境的影响相对较小
- 使用
https://space.example.com形式的地址 - 减轻外部证书签发与续期的负担
- 需要时可通过 Cloudflare Access 限制允许的用户或电子邮件域名
- 一个 Connector 可以按子域名连接多个内部 Web 服务
Cloudflare Tunnel 配置流程
- 将要使用的域名连接到 Cloudflare。
- 在 Cloudflare 仪表板中创建 Tunnel。
- 在 SpaceBuilder 服务器上安装
cloudflared。 - 使用仪表板中显示的命令运行 Connector。
- 在 Published application 中将域名与 SetFN 地址关联。
- 需要时添加 Cloudflare Access 策略。
- 从外部网络确认可以访问。
Published application 的 Service URL 使用以下值。
| 项目 | 示例 |
|---|---|
| Public hostname | space.example.com |
| Service type | HTTP |
| Service URL | http://localhost:8510 |
如果更改过 SetFN 的端口,请用实际的服务端口代替 8510。
Cloudflare 官方详细指南
Cloudflare 的界面和安装命令可能会变化,实际配置时请同时参考以下官方文档。
自行运营反向代理
如果已经拥有公网 IP 和服务器基础设施,可以使用 Caddy 或 NGINX 直接连接。
Caddy
只要域名的 DNS 指向服务器,且 80·443 端口能够到达服务器,Caddy 就可以自动处理 HTTPS 证书的签发与续期,适合小规模自行运营的环境。
space.example.com {
reverse_proxy 127.0.0.1:8510
}
详细设置请参考 Caddy 反向代理快速入门。
NGINX
如果已经在使用 NGINX,可以将 HTTPS 请求转发到 SetFN 的本地端口。
server {
listen 443 ssl;
server_name space.example.com;
location / {
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_pass http://127.0.0.1:8510;
}
}
上面的示例只展示了代理的核心结构。实际运营时还需要一并考虑证书、WebSocket、上传大小、超时和访问日志的设置。详细内容请参考 NGINX 官方反向代理指南。
路由器端口转发
这种方式是在路由器上将外部的 80·443 端口转发到反向代理服务器。与其把 SetFN 的 8510 端口直接暴露到互联网,不如配置为由 Caddy 或 NGINX 在 443 端口接收 HTTPS 请求后,再转发到内部的 8510。
需要满足以下条件。
- 互联网线路拥有可从外部访问的公网 IP
- 拥有路由器管理员权限
- 为服务器设置固定 IP 或 DHCP 保留,避免内部 IP 变化
- DNS 记录指向公网 IP
- 服务器防火墙只允许必要的端口
- 配置 HTTPS 证书签发与自动续期
在运营商使用 CGNAT 的线路上,路由器显示的 WAN IP 与实际公网 IP 不同,端口转发可能无法工作。这种情况下请使用 Cloudflare Tunnel 或 VPN 方式。
准备域名
如果有公司域名,建议使用 space.example.com 这样的子域名。没有域名时,可以在域名注册商处购买。
要使用 Cloudflare Tunnel,该域名必须已作为活动 Zone 连接到 Cloudflare 账户。如果自行使用反向代理,则将 DNS 的 A 或 AAAA 记录指向服务器的公网 IP。
确认访问
设置完成后,请按以下顺序确认。
- 在服务器上访问
http://localhost:8510 - 在同一网络中访问
http://<服务器 IP>:8510 - 通过域名进行 HTTPS 访问
- 关闭 Wi-Fi,在移动数据环境下访问
- 确认登录、文件上传、实时通知或聊天功能正常
如果从内部访问就失败,请先检查 SetFN 服务状态。如果内部可以访问但只有域名访问失败,请按 Tunnel、DNS、反向代理、防火墙的顺序排查。
运营检查清单
- 为管理员和用户使用长且唯一的密码
- 停用不需要的账户和共享链接
- 将 Tunnel Connector 或反向代理注册为系统服务
- 定期更新 Connector、操作系统和代理
- 检查 HTTPS 证书到期情况和 DNS 状态
- 检查外部访问和管理员活动日志
- 准备好故障时可通过内部地址访问的运营流程