我们的一台 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 80
为Listen 0.0.0.0:80
,Listen 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"
让我知道这是否有帮助:)