【问题标题】:Couldn't access CentOS httpd无法访问 CentOS httpd
【发布时间】:2021-02-11 19:51:38
【问题描述】:

我一直在使用 Ubuntu,最近才开始在我的桌面 (Ubuntu) 上的 VMplayer 上运行 Centos(CentOS Linux 版本 7.1.1503 (Core))。

  • 分支新的 CentOS 安装。
  • 已安装 httpd(使用“yum”)
  • 由于某种原因,httpd 没有自动启动,我运行“service httpd start”,它根据“netstat -antp”启动。

    [root@localhost ~]# netstat -antp
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1161/sshd           
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1620/master         
    tcp        0      0 10.0.0.19:22            10.0.0.7:20383          ESTABLISHED 2421/sshd: root@pts 
    tcp6       0      0 :::80                   :::*                    LISTEN      2453/httpd          
    tcp6       0      0 :::22                   :::*                    LISTEN      1161/sshd           
    tcp6       0      0 ::1:25                  :::*                    LISTEN      1620/master 
    
  • 我可以在本地访问 http 服务器(CentOs 命令行中的curl http://localhost

  • 当我尝试从主机curl http://172.16.13.143/ 访问httpd 时,它拒绝了TCP 连接。我能够 ssh 进入它,它适用于 ssh ssh root@172.16.13.143
  • 我已经停止了 iptables service iptables stop
  • SELinux 根据getenforce 命令关闭。

我只需要在网络界面上做一个快速测试,但我做不到。真的需要一些帮助。谢谢。

【问题讨论】:

  • 您仅通过 ipv6 监听端口 80。 ipv4上没有http服务器
  • 我也看到了,不知道为什么。我的网络上没有配置 IPv6,为什么是 IPv6 而不是 IPv4。你知道如何摆脱这种情况吗?谢谢。
  • @MarcB,我认为不一定是这样。这可以表明一个套接字同时监听 IPv4 和 IPv6。我刚刚在我的系统上确认了这一点...netstat 输出看起来一样,我只在我的网络上使用 IPv4 并且我的网络服务器正在工作:)
  • larsks:不。如果它正在收听 ipv4,则会有一个 :80 与 proto tcp.
  • 不。同样,我刚刚在我自己的系统上确认了这一点。

标签: apache centos


【解决方案1】:

安装在 RHEL/CentOS/Fedora 系统上的包不应该自动启动任何服务(因为也许你在配置之前还没有准备好向世界公开你的服务)。

运行service httpd start 会临时启动服务,但下次启动时不会启动。您希望systemctl enable httpd 使服务在您启动系统时自动启动。

您可以检查防火墙是否真的被禁用。运行 iptables -S 以查看当前规则集。默认的 iptables 配置通常只允许 ssh 并且不允许其他任何内容。

更新

您的系统可能正在运行firewalld 来管理防火墙。试试service firewalld stop

您可以运行systemctl disable firewalld 以防止它在下次系统启动时启动。

【讨论】:

  • 如果没有运行,那为什么 :::80 上还有 httpd 呢?
  • 正在运行。如果他要重新启动它就不会运行。
  • 感谢@larsks 的回答。我现在启用了该服务(所以下次我重新启动来宾操作系统时,httpd 将自动打开)。我在iptables -S 中有很长的条目列表。如何禁用 iptables?我不需要任何保护,因为它是开发盒。尝试了service iptables stop,但没有成功(无法从我的桌面建立到 httpd 的 TCP 连接)。
  • 查看我的更新。您的系统可能正在使用“firewalld”来管理本地防火墙。
【解决方案2】:

-- CentOS 7

将以下内容添加到'/etc/httpd/conf/httpd.conf'

Replace:
Listen 80

With:
Listen 0.0.0.0:80

这将禁用 ipv6 并启用 ipv4

要检查这个类型:

netstat -an | grep -i tcp | grep -i listen

重启apache服务

systemctl restart httpd.service

另外,启用防火墙访问端口 80

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

【讨论】:

    【解决方案3】:

    您是否通过iptables -L 确保没有防火墙在运行?

    执行以下命令以确保没有其他防火墙也在运行

    ps -ef
    

    正在收听“80”,因此您的连接被阻止看起来像

    【讨论】:

      【解决方案4】:

      在标准安装中,CentOS 7 设置为阻止流量到 Apache。

      将端口添加到您的防火墙:

      对于http:

      sudo firewall-cmd --permanent --add-port=80/tcp 
      

      对于 https:

      sudo firewall-cmd --permanent --add-port=443/tcp 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-12
        • 2018-06-15
        • 2023-04-04
        • 2022-10-14
        • 2020-10-21
        • 2016-10-29
        • 2021-02-04
        • 1970-01-01
        相关资源
        最近更新 更多