在 netstat 中没有看到 apache 在运行

在 netstat 中没有看到 apache 在运行

我只是在玩 apache,我让它工作了,也就是说我可以通过浏览连接到服务器,http://127.0.0.1而且http://192.168.1.5我没有运行 IPv6

这是 netstat 的结果

$ sudo service apache2 status
 * apache2 is running
$ netstat -an | grep :80
tcp6       0      0 :::80                   :::*                    LISTEN

$ wget 127.0.0.1
--2014-06-26 01:32:15--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11510 (11K) [text/html]
Saving to: ‘index.html’

100%[=====================================================================================================>] 11,510      --.-K/s   in 0s      

2014-06-26 01:32:15 (161 MB/s) - ‘index.html’ saved [11510/11510]

我原本期望看到它在常规 TCP 上进行监听,而它显然确实做到了!?

编辑:

$ netstat -a | grep LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 localhost:mysql         *:*                     LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
tcp6       0      0 [::]:https              [::]:*                  LISTEN     
tcp6       0      0 [::]:http               [::]:*                  LISTEN     

编辑2: 为什么投反对票?我遗漏了什么,有人能详细说明一下吗?

答案1

总结

阿帕奇出现在你的netstat输出中,并且它正在运行。这就是您的wget调用有效的原因。但是,它绑定到您的 IPv6 地址,而不是 IPv4 地址。地址映射会在必要时处理转换。

查看文档

这里显然存在一些 IPv6-IPv4 回退机制。事实上,我还没有在本地网络上使用 IPv6:

$ netstat -tunla | grep LISTEN | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN

需要注意的是,无论你如何定位你的机器,最终它仍然是相同的服务和端口。其余的主要是你的浏览器和 DNS 解析服务。但是,有关 Apache 如何处理此问题的更多信息,你可能需要查看他们的文件

对于 Apache 管理员来说,一个复杂因素是 IPv6 套接字是否可以同时处理 IPv4 连接和 IPv6 连接。使用 IPv6 套接字处理 IPv4 连接使用 IPv4 映射的 IPv6 地址,这在大多数平台上默认允许,但在 FreeBSD、NetBSD 和 OpenBSD 上默认不允许,以匹配这些平台上的系统范围策略。在默认不允许的系统上,特殊的配置参数可以更改 Apache 的此行为。

基本上,这是关于如何处理 IPv4 和 IPv6 套接字,以避免与跨平台兼容性和套接字处理相关的大多数问题。正如您所读到的,在 Ubuntu 等 Linux 平台上,这个问题可以通过以下方式解决:IPv4 映射的 IPv6 地址. 文档还指出:

如果您希望 Apache 仅处理 IPv4 连接,无论您的平台和 APR 支持什么,请在所有 Listen 指令上指定 IPv4 地址。

这将在文件中给出如下内容ports.conf

Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80

产生以下netstat输出之一...

$ netstat -tunla | grep LISTEN | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN 
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      127.0.0.1:80              127.0.0.1:80            LISTEN
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      192.0.2.1:80              192.0.2.1:80            LISTEN 

一个漂亮但尚未准备好 IPv6 的监听器。上述设置通常在 中设置/etc/apache2/ports.conf(对于较旧的版本,则直接在 中设置apache2.conf)。默认值为Listen 80,它执行自动的绑定,即符合文档中给出的IPv6规范。

相关内容