我在 Apache Web 服务器上提供 SOAP Web 服务。有 6 个不同的客户端 (IP) 请求数据,其中 3 个访问了错误的域。我正在尝试找到一种方法来记录请求来自哪个域名。
细节:
ServerA 是主
ServerB 是备份
domain1.com - Web 服务所在的域
domain2.com - 一个单独的域,在 ServerB 上提供单独的内容
ServerA 目前是独立的,拥有自己的 IP 和 domain1.com 的 DNS。这对每个人都适用。
ServerB 是 Web 服务的备份,但它已经托管 domain2.com。
我在 apache 配置文件中添加了如下条目:
<VirtualHost *:443>
ServerName domain2.com
DocumentRoot /var/www/html/
CustomLog logs/access_log_domain2443 common
ErrorLog logs/ssl_error_log_domain2443
LogLevel debug
SSLEngine on
... etc SSL directives ...
</VirtualHost>
我有域 1 和域 2 的 80 和 443,其中域 1 是第二个。
问题是,当我们将域 1 的 DNS 从服务器 A 切换到服务器 B 时,6 个客户端中有 3 个在调试日志中显示为访问域 2.com 而不是域 1.com,并且它们的 Web 服务请求失败,因为域 2.com 在 apache 配置文件中是第一个,并捕获所有与其他虚拟主机(即域 1.com)不匹配的请求。
我不知道他们访问的是 www.domain1.com、domain1.com(尽管我为这两个都添加了条目)还是使用外部 IP 地址或其他地址。有没有办法查看他们访问的是哪个 URL,而不仅仅是页面请求,或者有其他方法可以查看第一个域名为何会捕获第二个列出的域名的流量?
同时,我在 apache 配置中将 domain1.com 置于比 domain2.com 更高的位置。现在它可以捕获所有客户端的请求并正常工作,但我不知道它捕获的是什么,我想再次将 domain2.com 设为第一个条目,并为 domain1.com 设置正确的条目,无论它们如何命中它。
谢谢你的帮助!安德鲁
答案1
您是否检查过 apache access.log,请尝试以下方法获取更详细的日志:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog log/access_log combined
更多细节 :http://httpd.apache.org/docs/2.2/en/logs.html 希望对你有帮助