Cloudflare Tunnel + Nginx Proxy Manager:服务穿透
内容提要
Nginx Proxy Manager是一个可视化代理管理器,适合与Docker搭建的应用配合使用。它可以一键申请SSL证书,并自动续期。Cloudflare Tunnel可以创建一个Cloudflared类型的隧道,用于将内网服务映射到外网。通过Nginx Proxy Manager和Cloudflare,内网服务可以通过Tunnel转发到外网。可以通过重写DNS将域名直接指向Nginx Proxy Manager,提升访问体验。
延伸解读
配置顺序与证书申请的关键点
文章强调,申请SSL证书前必须确保域名已通过Cloudflare配置为可外部访问,因为Let's Encrypt需要验证域名所有权。在Nginx Proxy Manager中新增Proxy Host时,需先配置为Publicly Accessible且不启用SSL,待Cloudflare Tunnel设置好HTTP转发后,再申请证书并切换为HTTPS。若顺序错误,可能导致证书申请失败或出现无限重定向。
Docker网络与Tunnel启动的注意事项
Nginx Proxy Manager建议与需要反代的服务加入同一Docker网络,无需暴露端口。Cloudflare Tunnel的Docker容器需使用host网络模式,并可根据网络环境将Transport协议设为http2(默认quic,若UDP有问题则改用http2)。若DNS无法解析Cloudflare域名,可指定DNS服务器。这些设置影响Tunnel连接的稳定性。
HTTPS切换与TLS配置的细节
申请SSL证书后,必须在Cloudflare Tunnel配置中将Service的Type从HTTP切换为HTTPS,否则若Nginx启用了Force HTTPS,会导致无限重定向。此外,需在TLS设置中填写Origin Server Name为反代域名,否则Nginx可能无法正确转发。对于域名敏感的应用,可能还需配置HTTP Host Header,具体根据应用需求调整。
内网访问优化与DNS重写
当在内网访问已映射的域名时,流量会先解析到Cloudflare再通过Tunnel回源,增加延迟。如果内网使用Adguard等DNS服务,可以通过重写DNS将域名直接指向Nginx Proxy Manager的内网地址,从而缩短链路,提升访问速度。这一优化适用于内网环境,不影响外部访问。
Q&A
Nginx Proxy Manager 的主要功能是什么?
Nginx Proxy Manager 是一个可视化代理管理器,适合与 Docker 搭建的应用使用,支持一键申请和自动续期 SSL 证书。
如何创建 Cloudflare Tunnel?
在 Cloudflare 管理面板中,进入 Zero Trust - Network - Tunnels,点击 Create a tunnel,输入 Tunnel 名称并获取 Tunnel 的 token。
在 Docker 中启动 Cloudflare Tunnel 时需要注意什么?
启动时需设置网络模式为 host,Transport 协议可设置为 http2,并确保 DNS 能解析 Cloudflare 相关域名。
如何在 Nginx Proxy Manager 中配置 Proxy Host?
新增 Proxy Host 时需配置为 Publicly Accessible,并不配置 SSL,之后在 Cloudflare Tunnel 配置中填写域名和转发目标 Service 的 URL。
申请 SSL 证书后需要做什么?
申请 SSL 证书后,需要在 Cloudflare Tunnel 配置中将 Service 的 Type 切换成 HTTPS,以避免无限重定向。
如何提升内网服务的访问体验?
可以通过重写 DNS,将域名直接指向 Nginx Proxy Manager,减少链路长度,从而提升访问速度。