检查 TCP 80 端口是否正常工作

本文介绍在Windows Server 2012/2008及Linux发行版CentOS 7.3和Ubuntu 16.04中检查TCP 80端口的方法,包括确认安全组规则、服务状态、端口监听情况及防火墙设置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果您的实例无法对外提供 HTTP 服务,您可以按以下步骤检查 Web 服务相关的接口(默认为 TCP 80)是否正常工作:

  1. 在 ECS 管理控制台,确认安全组已经放行该端口。
  2. 远程连接 ECS 实例,确认服务已经开启。
  3. 确认端口正常被监听。如没有,请修改监听地址。
  4. 确认实例防火墙已经放行服务。
  5. 如仍无法解决,请提交工单咨询。

本文分别介绍在不同操作系统中如何检查 TCP 80 端口是否正常工作:

Windows Server 2012

这部分以在 Windows 2012 上安装 IIS 服务为例,说明在 Windows 实例中如何检查 TCP 80 端口是否正常工作。

  1. 登录 ECS 管理控制台,确认实例所在安全组里已经添加如下安全组规则:

    网络类型 网卡类型 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 优先级
    VPC 网络不需要配置 入方向 允许 HTTP(80) 80/80 地址段访问 0.0.0.0/0 1
    经典网络公网
  2. 远程连接 Windows 实例

  3. 查看 IIS 服务是否已经开启:

    1. 在 服务器管理器 窗口,选择 工具 > Internet Information Services (IIS) 管理器。如果看不到这个选项,说明没有成功安装 IIS 服务,需要重新安装 IIS 服务,参考文档:ECS Windows Server2012 使用 PowerShell 安装 IIS 。
      Windows2012_确认已安装IIS服务
    2. 在 Internet Information Services (IIS) 管理器 窗口,确认以下信息:
      • 在 连接 导航栏里,右击实例 ID,如果 启动 处于灰色状态,表示 IIS 服务已经开启。
      • 单击 网站,在右边列表页查看您安装的网站的状态。如果网站 状态 为 已停止(http),则单击网站,在右侧 操作 栏的 管理站点 部分,单击 启动,启动网站。
        Windows2012_确认站点已启动
  4. 查看端口在实例中是否正常被监听:

    1. 启动 命令提示符
    2. 运行命令:netstat -ano | findstr :80。如果返回以下命令,表示 80 端口正常全网监听:
           
      1. TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
      如果返回的不是上述结果,一般需要修改监听地址,参考文档:nginx/Tomcat/IIS 更改端口监听地址的方法
  5. 查看实例里防火墙是否已经放行 Web 服务:

    1. 选择 控制面板 > 系统与安全 > Windows 防火墙
    2. 根据防火墙状态,执行不同操作:
      • 如果防火墙处于关闭状态,不需要再做其他处理。如果仍无法访问网站,请提交工单 咨询。
      • 如果防火墙处于开启状态,执行以下操作:
        1. 单击 高级设置
        2. 在弹出窗口的左侧导航栏中,单击 入站规则
        3. 选择 万维网服务 (HTTP 流入量),如果处于禁用状态,在 操作 栏里,单击 启用规则
          Windows2012_防火墙里启用HTTP入站规则

完成上述检查,如果您仍不能通过 http://公网 IP 地址 访问您的实例,请您 提交工单 咨询。

Windows Server 2008

这部分以在 Windows 2008 上安装 IIS 服务为例,说明在 Windows 实例中如何检查 TCP 80 端口是否正常工作。

  1. 登录 ECS 管理控制台,确认实例所在安全组里已经添加如下安全组规则:

    网络类型 网卡类型 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 优先级
    VPC 网络不需要配置 入方向 允许 HTTP(80) 80/80 地址段访问 0.0.0.0/0 1
    经典网络公网
  2. 远程连接 Windows 实例

  3. 查看 IIS 服务是否已经开启:

    1. 在 服务器管理器 窗口,选择 角色 > Web 服务器(IIS)。如果看不到这个选项,说明没有成功安装 IIS 服务。
    2. 在 Web 服务器(IIS) 窗口,确认 系统服务 部分显示为 全部正在运行。如果不是这个状态,请启动所有服务。
      Windows2008_确认已安装IIS服务
  4. 查看端口在实例中是否正常被监听:

    1. 启动 命令提示符
    2. 运行命令:netstat -ano | findstr :80。如果返回以下命令,表示 80 端口正常全网监听:
           
      1. TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
      如果返回的不是上述结果,一般需要修改监听地址,参考文档:nginx/Tomcat/IIS 更改端口监听地址的方法
  5. 查看实例里防火墙是否已经放行 Web 服务:

    1. 单击 控制面板 > 系统与安全 > 检查防火墙状态
    2. 根据防火墙状态,执行不同操作:
      • 如果防火墙处于关闭状态,不需要再做其他处理。如果仍无法访问网站,请提交工单 咨询。
      • 如果防火墙处于开启状态,执行以下操作:
        1. 单击 高级设置
        2. 在弹出窗口的左侧导航栏中,单击 入站规则
        3. 选择 万维网服务 (HTTP 流入量),如果处于禁用状态,在 操作 栏里,单击 启用规则
          Windows2008_防火墙里启用HTTP入站规则

完成上述检查,如果您仍不能通过 http://公网 IP 地址 访问您的实例,请您 提交工单 咨询。

CentOS 7.3

这部分以在 CentOS 7.3 上安装 nginx 服务为例,说明在 Linux 实例中如何检查 TCP 80 端口是否正常工作。

  1. 登录 ECS 管理控制台,确认实例所在安全组里已经添加如下安全组规则:

    网络类型 网卡类型 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 优先级
    VPC 网络不需要配置 入方向 允许 HTTP(80) 80/80 地址段访问 0.0.0.0/0 1
    经典网络公网
  2. 远程连接 Linux 实例

  3. 查看 nginx 服务是否已经开启:运行命令 systemctl status nginx。如果返回以下结果,说明 nginx 已经启动。如果未开启,运行命令 systemctl start nginx。 
    CentOS7.3_nginx已启动

  4. 查看端口在实例中是否正常被监听:运行命令 netstat -an | grep 80。如果返回以下结果,表明 TCP 80 端口正在被正常监听。

       
    1. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

    如果返回的不是上述结果,一般需要修改监听地址,参考文档:nginx/Tomcat/IIS 更改端口监听地址的方法

  5. CentOS 7 以后版本默认安装 Firewalld。如果您已经启用 firewalld.service,需要放行 TCP 80 端口:运行命令 firewall-cmd --add-port=80/tcp --permanent。返回结果为 success 即表示已经放行 TCP 80 端口。

    使用 CentOS 7 以前的版本并开启默认防火墙 iptables 时,应注意 iptables 默认不拦截访问,如果您配置了 iptables 规则,需要执行以下步骤:

    1. 查看规则列表:运行命令 iptables --line -vnL。根据返回结果执行不同操作:
      • 如果您设置了默认拦截,添加规则放行 TCP 80 端口:运行命令iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      • 如果您设置了 DROP TCP 80 端口,替换规则放行 80 端口:运行命令 iptables -R INPUT [80端口对应的规则编号] -p tcp --dport 80 -j ACCEPT
    2. 保存上述规则:运行命令 service iptables save

完成上述检查,如果您仍不能通过 http://公网 IP 地址 访问实例,请您 提交工单 咨询。

Ubuntu 16.04

这部分以在 Ubuntu 16.04 上安装 Apache2 Web 服务器为例,说明在 Linux 实例中如何检查 TCP 80 端口是否正常工作。

  1. 登录 ECS 管理控制台,确认实例所在安全组里已经添加如下安全组规则:

    网络类型 网卡类型 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 优先级
    VPC 网络不需要配置 入方向 允许 HTTP(80) 80/80 地址段访问 0.0.0.0/0 1
    经典网络公网
  2. 远程连接 Linux 实例

  3. 查看 Apache2 Web 服务器是否已经开启:运行命令 service apache2 status。如果返回以下结果,说明 Apache2 Web 服务器已经启动。如果未开启,运行命令 service apache2 start
    Ubuntu 16.04_Apache2 Web 服务器正常工作

  4. 查看端口在实例中是否正常被监听:运行命令 netstat -an | grep 80,如果返回以下结果,表明 TCP 80 端口正在被正常监听。

       
    1. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

    如果返回的不是上述结果,一般需要修改监听地址,参考文档:nginx/Tomcat/IIS 更改端口监听地址的方法

  5. 如果您已经启用 UFW(Ubuntu 预装防火墙),您需要放行 TCP 80 端口或 HTTP 服务:运行命令 ufw allow 80/tcp 或 ufw allow http。返回结果为 Rule added 表示已经放行 TCP 80 端口或 HTTP 服务。

    如果您在实例中已经安装 Firewalld 并且已经启用 firewalld.service,您需要放行 TCP 80 端口:运行命令 firewall-cmd --add-port=80/tcp --permanent。返回结果为 success 即表示已经放行 TCP 80 端口。

<think>我们正在处理一个关于80端口被占用导致连接拒绝的问题。根据用户之前的描述,他们遇到了公网访问内网服务器时出现连接拒绝的错误,现在需要检查80端口是否被占用以解决该问题。用户提供了一些参考引用,其中引用[1]提到了Windows系统下80端口被占用的问题,引用[2][3][4]则分别展示了端口占用错误的解决思路、Tomcat端口占用排查以及递归查找可用端口的代码示例。这些引用主要关注端口占用问题,而用户的问题背景是公网访问内网服务器出现连接拒绝,所以我们需要结合之前的排查思路(防火墙、服务监听等)和端口占用排查。在之前的回答中,我们已经提到端口占用是导致连接拒绝的可能原因之一(步骤5)。现在用户明确要求检查80端口是否被占用。因此,我们需要指导用户如何在服务器上检查80端口是否被占用,并结合整个连接拒绝问题进行完整排查。以下是详细的回答结构:1.检查80端口是否被占用的方法(针对不同操作系统)-Windows系统-Linux系统2.端口占用情况的分析与解决-如果端口被占用:如何找到占用进程并处理-如果端口未被占用:回归到其他原因(如防火墙、服务未监听等)3.结合整个连接拒绝问题的完整排查流程(简单回顾,因为之前已经详细说明,这里可以作为总结)注意:用户的环境可能是Windows或Linux,因此需要提供两种系统的操作命令。同时,我们要生成相关问题。回答中需要注意:-使用中文-数学公式用$...$或$$...$$-引用的地方自然添加引用标识,但用户提供的引用只是参考,我们主要使用之前自己的步骤和通用知识。-代码块用```标注考虑到用户可能是运维人员或开发者,我们可以提供一些命令和代码示例(如引用[4]中的递归查找端口,但这里不是必须,因为用户主要是检查80端口)。现在开始构建回答。</think> 我将系统性地指导您检查80端口占用情况及排查连接拒绝问题。以下是完整排查流程,结合您的服务器环境(假设为Linux,Windows命令会单独标注): ### 🔍 一、检查80端口占用情况(关键第一步) #### **Linux服务器检查方法** ```bash # 1. 使用netstat查看端口监听状态 sudo netstat -tuln | grep :80 # 2. 使用ss命令(更现代) sudo ss -tuln | grep :80 # 3. 查看占用进程的详细信息(需root权限) sudo lsof -i :80 ``` **结果解读**: - 显示 `LISTEN` 且含 `:80` → 端口已被占用 - 显示 `0.0.0.0:80` → 监听所有IP(正常) - 显示 `127.0.0.1:80` → **只监听本地(需修复)** - 无输出 → 端口未被占用 #### **Windows服务器检查方法** ```powershell # 1. 查看80端口占用情况 netstat -ano | findstr :80 # 2. 根据PID查进程名(替换<PID>为实际数字) tasklist | findstr <PID> ``` --- ### ⚠ 二、端口被占用的解决方案 若步骤一确认80端口被占用: #### 1️⃣ 停止占用进程 ```bash # Linux: 通过PID结束进程 sudo kill <PID> # Windows: 通过PID结束进程 taskkill /PID <PID> /F ``` #### 2️⃣ 修改服务监听端口 如不需要使用80端口的进程(如测试服务): - 修改其配置文件(如Tomcat的 `server.xml`) ```xml <Connector port="8080" ... /> <!-- 改为其他端口 --> ``` #### 3️⃣ 优先级处理(关键服务需80端口) 若需保留Web服务(如Nginx/Apache): ```bash # 停止低优先级进程(如Skype、Steam等常见占用者) sudo systemctl stop skypeforlinux ``` --- ### 🔧 三、端口空闲时的深度排查 若80端口**未被占用**仍出现拒绝连接,需排查其他原因: #### 1️⃣ 检查Web服务状态 ```bash # 检查服务是否运行 sudo systemctl status nginx # 或 apache2/httpd # 强制重启服务 sudo systemctl restart nginx ``` #### 2️⃣ 验证监听配置 检查配置文件(关键位置): - **Nginx**: `/etc/nginx/nginx.conf` 确保存在:`listen 80;` 或 `listen 0.0.0.0:80;` - **Apache**: `/etc/apache2/ports.conf` 确保存在:`Listen 80` #### 3️⃣ 防火墙规则检测 ```bash # Linux防火墙放行80端口 sudo ufw allow 80/tcp # 云服务器安全组检查(如阿里云/腾讯云控制台) 确保存在入站规则:0.0.0.0/0 → TCP:80 ``` #### 4️⃣ NAT映射验证 若通过公网IP访问内网: - 在路由器/防火墙确认端口转发规则: `公网IP:80` → `内网服务器IP:80` --- ### 📊 排查流程图 ```mermaid graph TD A[公网访问被拒] --> B{检查80端口占用?} B -->|占用| C[停止非关键进程/改端口] B -->|空闲| D{Web服务运行?} D -->|停止| E[启动服务] D -->|运行| F{监听地址正确?} F -->|127.0.0.1| G[改为0.0.0.0] F -->|0.0.0.0| H{防火墙允许?} H -->|否| I[开放80端口] H -->|是| J{NAT映射?} J -->|错误| K[修正端口转发] J -->|正确| L[检查服务日志] ``` ### 📝 服务日志检查(最后手段) ```bash # Nginx错误日志 tail -f /var/log/nginx/error.log # Apache错误日志 tail -f /var/log/apache2/error.log ``` 日志中若有 `bind() failed` 或 `permission denied` 等关键字,表明权限或配置问题[^3]。 --- ### 💡 总结建议 1. **80%的拒绝连接问题**源于端口占用或防火墙阻拦 2. 优先使用 `ss -tuln` 快速定位端口状态 3. 修改配置后**必须重启服务**:`sudo systemctl restart nginx` 4. 公网访问需三重验证:**端口开放 + NAT映射 + 服务监听** ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值