Azure虚拟机自托管网站:如何实现域名直接访问(无需端口)
解决方案
方案1:Azure网络接口入站端口转发(无需修改服务代码)
- 登录Azure门户,定位到目标虚拟机,进入其关联的网络接口配置页
- 左侧菜单选择「入站端口转发」,点击「添加」
- 配置转发规则:
- 规则名称:自定义(如
HTTP_80_to_10000) - 目标虚拟机内部IP:填写Actix Web绑定的内网IP
X.X.X.X - 外部端口:
80(HTTP协议默认端口) - 内部端口:
10000(你的Actix Web服务监听端口)
- 规则名称:自定义(如
- 保存规则后,检查虚拟机的网络安全组(NSG),确保已添加入站TCP 80端口的允许规则(源设为
*)
方案2:调整服务绑定至默认HTTP端口(需修改代码)
- 由于80是系统特权端口,需确保虚拟机拥有root权限,修改Actix Web的绑定代码:
// 修改Actix Web绑定端口为80 HttpServer::new(|| App::new().service(/* 你的静态文件服务 */)) .bind(("X.X.X.X", 80))? .run() .await?; - 重启Actix Web服务后,在Azure NSG中添加允许入站TCP 80端口的规则(源设为
*)
原理说明
当用户访问http://www.domainname.com时,浏览器会自动向域名对应的IP的80端口发起请求。方案1通过Azure的端口转发规则,将外部80端口的流量映射到虚拟机内部的10000端口,让Actix Web服务接收并响应;方案2则直接让服务监听默认的80端口,配合NSG的端口放行规则,直接处理HTTP请求。两种方式均无需反向代理,仅通过Azure网络配置(或少量代码调整)即可实现无端口访问。
内容的提问来源于stack exchange,提问作者Sri Varshan
相关产品推荐
相关产品推荐

