human: 如何处理七牛云的云主机检查TCP 80端口是否正常工作

gpt: [云主机](https://developer.qiniu.com/qvm) > 常见问题 > QVM 网络 FAQ >检查TCP 80端口是否正常工作

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

最近更新时间: 2020-08-13 19:09:43

# 概述

本文主要介绍在不同操作系统中检查TCP 80端口是否正常工作的方法。

# 详细信息

> 七牛云提醒您：
>
>   * 如果您对实例或数据有修改、变更等风险操作，务必注意实例的容灾、容错能力，确保数据安全。
>   * 如果您对实例（包括但不限于QVM、RDS）等进行配置与数据修改，建议提前创建快照或开启RDS日志备份等功能。
>   * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息，建议您及时修改。
>

如果实例无法对外提供HTTP服务，可以按以下思路检查Web服务相关的接口（默认为TCP 80）是否正常工作。

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

本文分别介绍在以下不同操作系统中检查TCP 80端口是否正常工作的方法：

  * Windows Server 2012
  * Windows Server 2008
  * CentOS 7.3
  * Ubuntu 16.04

以下是在Windows Server 2012系统中检查TCP 80端口是否正常工作的方法。

## Windows Server 2012

> **说明** ：在Windows 2012系统的Windows实例中安装IIS服务为例。

  1. 登录[QVM 管理控制台](https://portal.qiniu.com/qvm/dashboard "点击进入 QVM 管理控制台")，确认实例所在安全组里已经添加以下安全组规则。

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

  3. 以下是查看IIS服务是否已经开启的操作步骤：

    1. 在**服务器管理器** 窗口，单击**工具** >**Internet Information Services (IIS)管理器** 。如果找不到这个选项，则说明没有成功安装IIS服务，需要重新安装IIS服务。  
![Windows2012_确认已安装IIS服务](http://qey2kbifv.hn-
bkt.clouddn.com/2020-08-13/Z2rvROYlhGmnIg7qds8a.png)

    2. 在**Internet Information Services (IIS)管理器** 窗口中确认以下信息：
       * 在**连接** 导航栏里，右键单击实例ID，如果**启动** 处于灰色状态，表示IIS服务已经开启。
       * 单击**网站** ，在右边列表页查看您安装的网站的状态。如果网站**状态** 为**已停止** ，则单击网站，在右侧**操作** 栏的**管理站点** 部分，单击**启动** ，启动网站。  
![Windows2012_确认站点已启动](http://qey2kbifv.hn-
bkt.clouddn.com/2020-08-13/Z1UW9Tsm7hyYRSoAOn3G.png)

  4. 以下是查看端口在实例中是否正常被监听的操作步骤：

    1. 启动**命令提示符** 。
    2. 执行以下命令。
        
                netstat -ano | findstr :80

如果返回类似`TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
4`，则说明80端口正常全网监听。如果返回的不是该端口，请在Internet Information Services
(IIS)管理器窗口中，单击指定网站，然后单击右侧**操作** 栏中的**绑定** ，将绑定的端口该为80端口。

  5. 以下是查看实例里防火墙是否已经放行Web服务的操作步骤：

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

  6. 完成上述检查，如果仍不能访问实例，请提交工单咨询。

以下是在Windows Server 2008系统中检查TCP 80端口是否正常工作的方法。

## Windows Server 2008

> **说明** ：以在Windows 2008系统的Windows实例中安装IIS服务为例。

  1. 登录[QVM 管理控制台](https://portal.qiniu.com/qvm/dashboard "点击进入 QVM 管理控制台")，确认实例所在安全组里已经添加以下安全组规则。

网络类型| 网卡类型| 规则方向| 授权策略| 协议类型| 端口范围| 授权类型| 授权对象| 优先级  
---|---|---|---|---|---|---|---|---  
VPC 网络| 不需要配置| 入方向| 允许| HTTP(80)| 80/80| 地址段访问| 10.0.0.0/8| 1  
经典网络| 公网  
  2. 参见远程连接 Windows 实例，登录Windows实例。
  3. 以下是查看IIS服务是否已经开启的操作步骤。

    1. 在**服务器管理器** 窗口，选择**角色** >**Web 服务器** 。如果找不到这个选项，则说明没有成功安装IIS服务。
    2. 在**Web 服务器** 窗口，确认**系统服务** 部分显示为**全部正在运行** 。如果不是这个状态，请启动所有服务。  
![Windows2008_确认已安装IIS服务](http://qey2kbifv.hn-
bkt.clouddn.com/2020-08-13/MPSqNCZrDL3WY1yd2kXx.png)

  4. 以下是查看端口在实例中是否正常被监听的操作步骤。

    1. 启动**命令提示符** 。
    2. 执行以下命令。
        
                netstat -ano | findstr :80

如果返回`TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4`，则说明80端口正常全网监听。如果返回的不是该端口，请在Internet
Information Services (IIS)管理器窗口中，单击指定网站，然后单击右侧**操作** 栏中的**绑定** ，将绑定的端口该为80端口。

  5. 以下是查看实例里防火墙是否已经放行Web服务的操作步骤。

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

  6. 完成上述检查，如果仍不能访问实例，请提交工单咨询。

以下是在CentOS 7.3系统中检查TCP 80端口是否正常工作的方法。

## CentOS 7.3

> **说明** ：以在CentOS 7.3系统的Linux实例中安装Nginx服务为例。

  1. 登录[QVM 管理控制台](https://portal.qiniu.com/qvm/dashboard "点击进入 QVM 管理控制台")，确认实例所在安全组里已经添加以下安全组规则。

网络类型| 网卡类型| 规则方向| 授权策略| 协议类型| 端口范围| 授权类型| 授权对象| 优先级  
---|---|---|---|---|---|---|---|---  
VPC 网络| 不需要配置| 入方向| 允许| HTTP(80)| 80/80| 地址段访问| 10.0.0.0/8| 1  
经典网络| 公网  
  2. 参见远程连接 Linux实例，登录Linux实例。
  3. 执行以下运行命令。
    
        systemctl status nginx

如果系统返回类似如下，则说明Nginx已经启动。如果未开启，则执行`systemctl start nginx`命令。  
![CentOS7.3_nginx已启动](http://qey2kbifv.hn-
bkt.clouddn.com/2020-08-13/r1HPOURpGbYZ7LA68Kcd.png)

  4. 执行以下命令，查看端口在实例中是否正常被监听。
    
        netstat -an | grep 80

如果返回`tcp 0 0 0.0.0.0:80
0.0.0.0:_LISTEN_`，则说明80端口正常全网监听。如果返回的不是上述结果，请修改监听地址。关于如何修改监听地址，请参见如何修改Nginx服务端口监听地址。

  5. CentOS 7之后的版本默认安装Firewalld。如果已经启用`firewalld.service`，则需要放行 TCP 80 端口。执行以下命令。若返回结果为`success`，则表示已经放行TCP 80端口。
    
        firewall-cmd --add-port=80/tcp --permanent

> 使用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`。

  6. 完成上述检查，如果仍不能访问实例，请提交工单咨询。

以下是在Ubuntu 16.04系统中检查TCP 80端口是否正常工作的方法。

## Ubuntu 16.04

> **说明** ：以在Ubuntu 16.04系统的Linux实例中安装Apache2 Web服务器为例。

  1. 登录[QVM 管理控制台](https://portal.qiniu.com/qvm/dashboard "点击进入 QVM 管理控制台")，确认实例所在安全组里已经添加以下安全组规则。

网络类型| 网卡类型| 规则方向| 授权策略| 协议类型| 端口范围| 授权类型| 授权对象| 优先级  
---|---|---|---|---|---|---|---|---  
VPC 网络| 不需要配置| 入方向| 允许| HTTP(80)| 80/80| 地址段访问| 10.0.0.0/8| 1  
经典网络| 公网  
  2. 参见远程连接 Linux实例，登录Linux实例。
  3. 查看Apache2 Web服务器是否已经开启。执行命令`service apache2 status`。如果返回以下结果，说明 Apache2 Web服务器已经启动。如果未开启，执行命令 `service apache2 start`。  
![Ubuntu 16.04_Apache2 Web 服务器正常工作](http://qey2kbifv.hn-
bkt.clouddn.com/2020-08-13/KNcxI6uHCOjfgFWLeAv1.png)

  4. 执行以下命令，查看端口在实例中是否正常被监听。
    
        netstat -an | grep 80

如果返回`tcp 0 0 0.0.0.0:80 0.0.0.0:
LISTEN`，则说明80端口正常全网监听。如果返回的不是上述结果，请修改监听地址。关于如何修改监听地址，请参见如何修改Apache服务端口监听地址。

  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端口。

  6. 完成上述检查，如果仍不能访问实例，请提交工单咨询。

# 适用于

  * 云服务器QVM