我有一台 Apache 服务器,该服务器有多个VirtualHosts
通过指令过滤的ServerName
服务器。我现在正尝试VirtualHost
基于单独的端口号进行过滤,但遇到了问题。
我的 Apache 配置是:
ServerRoot "/srv"
Listen ip:80
Listen ip:81
Include loadModules.conf
Mutex posixsem
<VirtualHost ip:80>
Include external1.conf
</VirtualHost>
<VirtualHost ip:80>
Include external2.conf
</VirtualHost>
<VirtualHost ip:81>
Include external3.conf
</VirtualHost>
我的远程 IP 地址在哪里ip
。在每个 externali.conf 文件中,ServerName
指令在两种情况下设置为分隔域名,在第三种情况下设置为:
ServerName ip:81
当端口为 80 时,通过浏览器进行的连接以及通过 bash 中的 wget 进行的连接都可以正常工作。当我connection timeout
尝试访问 时,浏览器会出错ip:81
,而 wget 在 bash 访问 时会挂起ip:81
。
为了诊断该问题,我检查了远程绑定的程序netstat -ntlp | grep httpd
,结果是:
tcp 0 0 ip:80 0.0.0.0:* LISTEN
tcp 0 0 ip:81 0.0.0.0:* LISTEN
这使我得出这样的结论:(1)Apache 正在监听端口 80 和 81 上的传入请求。
可能有防火墙阻止了传入的连接,因此我检查防火墙阻止情况并ufw status | 81
返回一个空字符串,所以我得出结论:(2)没有防火墙阻止传入的连接。
通过这些结果,我不明白为什么外部请求无法连接。
其他一些可能有帮助的诊断程序:wget ip:81
在我的远程机器上运行成功返回一个页面。
我在 Linux 上运行 bash,并且我的远程服务器由 IONOS 公司托管。
任何能指出潜在问题所在或我能幸运地解决问题的帮助都将不胜感激。此外,确认我的假设 (1) 和 (2) 是正确的将有助于我解决问题。
我大约在一年前就遇到了这个问题,并决定购买域名来解决这个问题,现在解决这个问题将是最值得赞赏的!