Apache 服务器不侦听 IPv4,但侦听 IPv6

Apache 服务器不侦听 IPv4,但侦听 IPv6

我们的一台 RHEL apache 服务器上面临一个奇怪的问题。

实际上,它并没有监听远程主机的 80 端口。当我们本地浏览时,http://localhost它会打开默认页面。当我们检查监听端口时netstat,我们发现只有tcp6接口在监听:::80。并且没有 的条目tcp,并且该条目应该存在于那里,例如

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

我尝试在许多论坛中搜索此问题,但建议的解决方案均无效。在 中httpd.conf,我们更改Listen 80Listen 0.0.0.0:80Listen 127.0.0.0:80 但它没有打开 80 端口来从远程主机访问。 IPtables 从一开始就被禁用。

我们如何设置服务器侦听 IPv4?

答案1

assiduus@localhost:~/httpd-2.4.34$ ./configure --help | grep IPv6
--enable-v4-mapped      Allow IPv6 sockets to handle IPv4 connections
assiduus@localhost:~/httpd-2.4.34$

当您从源代码编译 Apache httpd 时,默认情况下启用此功能。如果您使用了发行版二进制包,那么显然此选项已启用。

答案2

使用类似于此配置的内容:

<VirtualHost *:80>
   ServerName www.domain.com
   ServerAlias domain.com

   DocumentRoot /path/to/your/webroot/
   ...

</VirtualHost>

这 ”:80" 允许您的 Web 服务器侦听端口 80 上的所有 IP 地址;但是,只有启用这个新创建的虚拟主机配置文件并重新启动 Web 服务器后,这才会生效。

启用新的虚拟主机配置:

a2ensite domain.com.conf

重新启动网络服务器

service apache2 restart

要验证 Web 服务器是否同时侦听 ipv4 和 ipv6,请检查:

netstat -plunt |grep ":80"

让我知道这是否有帮助:)

相关内容