如何查看 Apache 网络服务器上的当前连接?

如何查看 Apache 网络服务器上的当前连接?

我在 Webmin/Virtualmin 的帮助下使用 Apache 在基本 LAMP 设置中托管了相当多的虚拟主机。我正在寻找一个类似 top 的工具来监控当前连接。虚拟托管部分似乎给我带来了麻烦。以下是我尝试过的方法:

  • netstat- 我可以看到连接,但它们显示好像它们都在使用我的主域,例如mydomain.com:www
  • iftop- 我非常喜欢它,但也有类似的缺点netstat:不显示虚拟主机。
  • apachetop- 似乎没有显示我所有虚拟主机的信息。我正在将日志记录到单独的自定义日志文件中,我怀疑这就是它不起作用的原因。
  • ntop,,,,——也darkstat不起作用。MRTGbwm-ngIPTraf

因此,基本上,我正在寻找类似于当前输出的东西netstat,但包括请求的虚拟主机,例如:avirtualsite.com:www

答案1

Andrea Corbellini 的回答向您解释为什么它无法与您使用的工具配合使用以及虚拟主机的工作原理。这是我能想到的在 Apache 中完成此操作的最简单的方法...

mod_status将会帮助你。

免责声明:我无法说出如何在 Webmin 中完成此操作 - 我使用裸配置文件来设置服务器。以下只是步骤的基本概述。

它是一种top类似工具,但以网页形式呈现。它列出了直接从 Apache 查询的当前状态,因此它不像 Apache 那样依赖于解析日志文件apachetop

  1. 使能够mod_status

    sudo a2enmod status
    
  2. 授予自己访问权限。

    • 打开/etc/apache2/mods-enabled/status.conf并编辑:
    • 设置ExtendedStatusOn(可选,但更棒,速度稍慢)
    • 在 内<Location /server-status>附加将您的 IP 地址添加到指令行中Allow。例如:

      Allow from 127.0.0.1 ::1 66.77.88.99
      
  3. 重新启动Apache:

    sudo service apache2 restart
    
  4. 在浏览器中使用该工具,例如:http://1.2.3.4/server-status

    它看起来像此示例截图

  5. 继续F5按以获取更新。或者获取一个很棒的浏览器插件并观察它的更新!


网页管理

原始发帖人为未来访客提供的附录

在 Webmin 中,有关状态模块的基本步骤可以在这里找到:

  • 服务器->Apache 网络服务器->配置 Apache 模块
  • 选择地位模块并单击启用选定模块

在此处输入图片描述

答案2

另一种方法是输入

tail -f /var/log/apache2/access.log

在你的终端

答案3

您尝试的所有工具都无法给您正确的答案。原因是您请求的信息在建立连接时丢失了。

让我们举个例子:假设你的 Web 服务器有一个 IP 地址(1.2.3.4) 和两个主机名 (a.我的域名.comb.我的域名.com) 解析该 IP 地址。

当您使用您最喜欢的网络浏览器访问时会发生什么a.我的域名.com

  1. 浏览器向你的 DNS 服务器询问 IP 地址a.我的域名.com对应。
  2. DNS 服务器告诉浏览器该地址是1.2.3.4
  3. 网络浏览器连接到1.2.3.4

所以netstat公司只知道有一个传入连接到1.2.3.4。您之所以看到主机名而不是 IP 地址,是因为 IP 地址有一个 rDNS 记录,因此netstat更愿意显示它而不是 IP,因为这样更好。尝试netstat -n(或删除 rDNS 记录),您将看到 IP 地址。

但这还不是全部:当我说用于建立连接的主机名信息丢失时,我并不完全正确。从 TCP/IP 堆栈的角度来看,这句话是正确的。但如果我们从 HTTP 协议的角度来看,情况就不同了。在每个 HTTP 请求中,都有一个Host:标头,其中包含浏览器用于发出请求的主机名。

所以,简而言之,您应该查看 Web 服务器的日志文件。Web 服务器是处理 HTTP 请求的服务,因此是唯一知道“原始”主机名的服务。

答案4

您可以使用以下方法检查:

netstat -na | grep 'ESTA'

相关内容