本指南介绍了如何使用 cloudflared 将 Azure 虚拟机连接到 Cloudflare,并通过 Cloudflare Tunnel 发布 Web 应用程序。
-
在 Azure 门户中,前往 Virtual Machines(虚拟机)> Create(创建)> Azure virtual machine(Azure 虚拟机)。
-
选择 **Resource group(资源组)**或新建一个。

-
输入虚拟机的名称并选择区域。对于 Image(映像),选择 Ubuntu Server 24.04 LTS。对于 Size(大小),选择合适的大小(例如 Standard_B1s)。
-
在 **Administrator account(管理员账户)**下,选择 **SSH public key(SSH 公钥)**并输入您的密钥对。

-
在 **Inbound port rules(入站端口规则)**下,允许 SSH (
22)。为了测试目的,还要允许 HTTP (80) 和 HTTPS (443)。
-
选择 Review + create(查看 + 创建),然后选择 Create(创建)。
虚拟机运行后,从虚拟机概览页面复制其 Public IP address(公共 IP 地址)。
-
SSH 连接到该实例:
ssh -i "your-key.pem" azureuser@<PUBLIC_IP> -
运行
sudo su以获取该虚拟机的完全管理员权限。 -
出于测试目的,您可以在端口
80上部署一个基础的 Apache Web 服务器:apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><h1>Hello Cloudflare!</h1> <p>This page was created for a Cloudflare demo.</p> </body></html> EOF -
要验证 Apache 服务器是否正在运行,请打开浏览器并转到
http://<PUBLIC_IP>(确保通过http连接,而不是https)。您应该会看到 Hello Cloudflare! 测试页面。
- 在 Cloudflare 仪表板 ↗中,转到 Networking(网络) > Tunnels(隧道)。
- 选择 Create Tunnel(创建隧道) 并输入名称(例如,
azure-tunnel)。 - 选择 Create Tunnel(创建隧道)。
- 在 Setup Environment(设置环境) 下,选择 Debian 64-bit(Debian 64 位)。
- 复制安装命令并在您的 Azure VM 上运行它们。
- 隧道连接后,选择 Continue(继续)。
- 在 Routes(路由) 下,选择 Add route(添加路由) > Published application(已发布的应用程序)。
- 输入主机名(例如,
hellocloudflare.<your-domain>.com)。 - 在 Service(服务) 下,输入
http://localhost:80。 - 选择 Add route(添加路由)。
要进行测试,请打开浏览器并转到您配置的主机名。您应该会看到 Hello Cloudflare! 测试页面。
要保护您的 Azure VM,您可以配置您的网络安全组(NSG) ↗以拒绝所有入站流量,并且仅允许向 Cloudflare Tunnel IP 地址发送出站流量。所有 NSG 规则均按优先级进行评估;不匹配允许规则的流量将被默认拒绝规则阻止。因此,您可以删除所有自定义入站规则,只保留相关的出站规则。
配置 NSG 规则后,验证您是否仍可通过 Cloudflare Tunnel 经由其公共主机名访问该服务。该服务不应再能从 Cloudflare Tunnel 之外访问——例如,直接访问 VM 的公共 IP 应该不再起作用。