You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Linux虚拟机入站规则配置失败,无法接收流量

排查Azure Linux虚拟机上Apache Web服务器无法访问的问题

我来帮你一步步排查这个问题,结合你提供的NSG入站规则截图,咱们从几个关键方向入手:

  • 先确认Apache服务本身是否正常运行
    登录到你的Linux虚拟机,先检查Apache的状态:

    • 如果你用的是Debian/Ubuntu系列,执行:systemctl status apache2
    • 如果是RHEL/CentOS系列,执行:systemctl status httpd
      看输出里是否显示active (running)。如果服务没启动,先启动它:systemctl start apache2(或httpd),再设置开机自启:systemctl enable apache2。
      接着在VM本地测试访问,执行curl localhost,如果能返回Apache的默认页面内容,说明服务本身没问题;如果本地都访问不了,那大概率是Apache的配置文件有误,比如端口冲突、配置语法错误。
  • 检查虚拟机的本地防火墙
    很多Linux发行版默认启用了本地防火墙,这可能会拦截外部请求:

    • Ubuntu系统:执行ufw status查看当前规则,如果没看到允许80/443端口的规则,添加:
      ufw allow 80/tcp
      ufw allow 443/tcp
      ufw reload
      
    • CentOS/RHEL系统:执行firewall-cmd --list-all查看已开放的服务,如果没有http和https,添加:
      firewall-cmd --add-service=http --permanent
      firewall-cmd --add-service=https --permanent
      firewall-cmd --reload
      
  • 核实Azure网络安全组(NSG)的配置细节
    从你的截图看,已经添加了80和443的入站允许规则,但还有几个细节要确认:

    • 这些规则是否关联到了你的VM对应的网络接口或子网?有时候NSG可能被创建但没正确关联到目标资源,导致规则不生效。
    • 检查规则的优先级:有没有优先级更高的拒绝规则(比如拒绝所有入站的规则)覆盖了你的允许规则?NSG规则是按优先级从低到高数值执行的,数值越小优先级越高。
    • 确认规则的目标端口范围和协议是不是准确设置为80/443、TCP,来源是否为Any(或者你指定的正确来源范围)。
  • 验证公网IP和端口连通性

    • 确保你访问的是VM的公网IP地址,而不是内网IP。你可以在Azure门户的VM详情页查看公网IP,或者登录VM执行curl ifconfig.me获取当前公网IP,用这个IP测试访问。
    • 用telnet或nc工具测试端口连通性,比如在本地电脑执行telnet <VM公网IP> 80,如果连接超时,说明网络层面(NSG或路由)有问题;如果提示“连接被拒绝”,则可能是Apache没监听80端口或本地防火墙拦截。
  • 检查Apache的监听配置
    确认Apache是否在正确的端口和地址上监听:

    • 查看配置文件:Ubuntu的/etc/apache2/ports.conf,CentOS的/etc/httpd/conf/httpd.conf,确保里面有Listen 80(如果用HTTPS还要有Listen 443)。
    • 执行netstat -tulpn | grep apache2(或httpd),看输出里是否有0.0.0.0:80或者:::80,这表示Apache在所有网络接口上监听;如果只有127.0.0.1:80,说明只允许本地访问,需要修改配置文件后重启Apache。

内容的提问来源于stack exchange,提问作者daRula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:47:46