无法配置httpd.conf

无法配置httpd.conf

我在使用 httpd 时遇到了一些问题,无法对其进行配置(无法在浏览器中打开)。我已经多次这样做了,但现在我遗漏了一些东西。

我已经在带有 ubuntu 14 的 virtualbox 上安装了 CentOS 6.5。使用与本地 ip 地址的桥接连接。

在 httpd.conf 中更改此行,

#Listen 192.168.1.144:80

但没有“#”则无法启动httpd服务。使用127.0.0.1或0.0.0.0也会出现同样的问题。

在 iptables 中

    :INPUT ACCEPT [0:0]
    :`FORWARD ACCEPT [0:0]`
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  COMMIT

端口 80 已打开。在我的路由器中也已打开。

我尝试使用 nginx,但遇到了同样的问题。我开始认为问题出在 virtualbox 或 ubuntu 上。

编辑1:这是来自error_log:

[Mon Jul 14 17:11:02 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Jul 14 17:11:02 2014] [notice] Digest: generating secret for digest authentication ...
[Mon Jul 14 17:11:02 2014] [notice] Digest: done
[Mon Jul 14 17:11:02 2014] [notice] Apache/2.2.15 (Unix) DAV/2 configured -- resuming normal operations
[Mon Jul 14 18:18:53 2014] [notice] caught SIGTERM, shutting down
[Mon Jul 14 18:18:54 2014] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[Mon Jul 14 18:18:54 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Jul 14 18:18:54 2014] [notice] Digest: generating secret for digest authentication ...
[Mon Jul 14 18:18:54 2014] [notice] Digest: done
[Mon Jul 14 18:18:54 2014] [notice] Apache/2.2.15 (Unix) DAV/2 configured -- resuming normal operations

也许问题出在 VirtualBox 上,因为在我的 Ubuntu(主操作系统)上 apache 运行得很好。

编辑2

问题解决了!

我用 VMware 替换了 VirtualBox,现在没有遇到任何问题。:)

答案1

看起来你可能遇到了多个问题,所以首先我们要确保你已经在 VirtualBox 和 Centos 中正确设置了网络访问。我在这里写的只是一份指南,用于识别问题所在,而不是任何关于如何解决问题的信息,因为你需要提供更多信息才能得到解决方案。

问题 1:互联网访问 首先,在 VirtualBox 中确保将网络适配器设置为“连接到桥接适配器”,然后选择实际机器的互联网连接源,即 en0:Wi-Fi。

其次,启动虚拟机,以 root 身份登录并输入ifconfig。你应该看到类似这样的内容,并记下inet addr

eth0      Link encap:Ethernet  HWaddr 08:00:27:4D:22:B1  
          inet addr:192.168.3.105  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe4d:22b1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:632 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:63848 (62.3 KiB)  TX bytes:8159 (7.9 KiB)

然后你需要检查是否可以ping google.com。如果成功,你应该看到类似下面的行。按 CTRL + C 取消:

64 bytes from blablabla.bla.com (*.*.*.*): icmp_seq=1 ttl=60 time=1.61 ms

如果到了这一步,您的虚拟机就可以访问互联网了。下一步是测试其他机器是否可以访问您的虚拟机。

现在您需要检查网络上的其他网络计算机是否可以看到您的虚拟机。使用实际机器上的控制台,ping根据对您之前运行的命令inet addr的响应。ifconfig

然后再次使用 Nmap 在实际机器上的控制台检查虚拟机上的开放端口。请参阅http://nmap.org/book/install.html了解有关 Nmap 的有用信息。您应该看到包含类似以下内容的响应:

80/tcp   open     http        Apache httpd 2.2.14 ((Centos))

如果您到了这一步,并且一切顺利,那么是时候解决您在 httpd.conf 文件中肯定存在的问题了。如果您对任何一个阶段的响应不同,那么您的问题比您的 httpd.conf 设置更大。

编辑1:

好的,到目前为止一切都很好。您已打开端口 80 并可以访问网络,因此下一步工作是确定 httpd.conf 文件中需要什么。

你肯定希望首先监听端口 80 上的任何传入流量,方法是将该行更改为

Listen 80

接下来您还需要告诉我们当您重新启动 httpd 时发生的任何有趣的事情:

service httpd restart

在您的日志文件中/var/log/httpd/error_log。您可以在另一个控制台窗口中执行诸如重新启动 httpd 之类的操作时观察此日志的增长,tail例如使用:

tail /var/log/httpd/error_log

如果您将日志中的任何相关内容作为上述问题的编辑发布,这将有助于我们诊断问题。

答案2

我建议你分担一下你的问题:

  1. 防火墙:尝试在端口 80 上运行 ncat tcp 服务器,并尝试从防火墙后面访问
  2. httpd:在本地运行 http 并在本地使用 ncat/telnet 连接以确保其正常运行

还要检查 httpd 错误日志是否存在任何问题。

相关内容