如何在Apache Web服务器上查看当前连接?
我在Webmin / Virtualmin的帮助下,在基本的LAMP设置中使用Apache托管了相当多的虚拟主机。 我正在寻找一个类似顶级的工具,我可以在其中监控当前的连接。 虚拟主机部分似乎在这给我带来麻烦。 这是我尝试过的:
-
netstat
– 我可以看到连接,但是它们显示我好像都在使用我的主域名,例如mydomain.com:www
。 -
iftop
– 我非常喜欢它,但与netstat
类似的缺点:不显示虚拟主机。 -
apachetop
– 似乎没有显示我所有虚拟主机的信息。 我正在记录单独的自定义日志文件,我怀疑它是导致它不起作用的原因。 -
ntop
,darkstat
,MRTG
,bwm-ng
,IPTraf
– 也不工作。
所以,基本上,我正在寻找类似于当前netstat
输出的东西,但要包含请求所针对的虚拟主机,例如: avirtualsite.com:www
: avirtualsite.com:www
。
Andrea Corbellini的回答解释了为什么它不适用于您正在使用的工具以及虚拟主机的工作方式。 这是我能想到的在Apache中完成它的最简单的方法…
mod_status
会帮助你。
免责声明:我不知道在Webmin中如何做到这一点 – 我使用裸配置文件来设置服务器。 这里只是步骤的基本概述。
它是一个类似top
的工具,但表示为一个网页。 它列出了从Apache直接查询的当前状态,因此它不依赖于像apachetop
那样解析日志文件。
-
启用
mod_status
:sudo a2enmod status
-
给自己访问权限。
- 打开
/etc/apache2/mods-enabled/status.conf
并编辑: - 将
ExtendedStatus
设置为On
(可选,但更精彩,速度更慢) -
在
,使用Allow
指令将您的IP地址附加到该行。 例:Allow from 127.0.0.1 ::1 66.77.88.99
- 打开
-
重启Apache:
sudo service apache2 restart
-
在浏览器中享受该工具,例如:
http://1.2.3.4/server-status
:http://1.2.3.4/server-status
它将看起来像这个示例屏幕截图 。
-
继续按F5进行更新。 或者获得一个很棒的浏览器插件,并观看它正在更新!
Webmin的
OP对未来访客的补充
在Webmin中,可以在此处找到有关Status模块的基本步骤:
- 服务器 – > Apache Webserver – > 配置Apache模块
- 选择Status模块,然后单击Enable Enable Modules
您尝试的所有工具永远不会给您正确的答案。 原因是在建立连接时,您请求的信息将丢失。
让我们举个例子:假设您的Web服务器有一个IP地址( 1.2.3.4 )和两个解析为该IP地址的主机名( a.mydomain.com和b.mydomain.com )。
当您访问a.mydomain.com时使用自己喜欢的网络浏览器会发生什么?
- 浏览器向您的DNS服务器询问a.mydomain.com对应的IP地址。
- DNS服务器告诉浏览器地址是1.2.3.4 。
- Web浏览器连接到1.2.3.4 。
所以netstat
&co。 只知道有一个传入的连接到1.2.3.4 。 您看到主机名而不是IP地址的原因是IP地址具有rDNS记录,因此netstat
更喜欢显示而不是IP,因为它更好。 尝试使用netstat -n
(或删除rDNS记录),您将看到IP地址。
但这还不是全部:当我说有关用于建立连接的主机名的信息丢失时,我并不完全正确。 从TCP / IP堆栈的角度来看,该句子是真的。 但是,如果我们从HTTP协议的角度来看问题,那么事情就会有所不同。 在每个HTTP请求中都有一个Host:
标头,其中包含浏览器用于发出请求的主机名。
因此,简而言之,您应该查看Web服务器的日志文件。 Web服务器是处理HTTP请求的服务,因此是唯一知道“原始”主机名的服务。
另一种方式是打字
tail -f /var/log/apache2/access.log
在你的终端
您可以使用此bash检查端口80上连接的所有ips
netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
注意:如果要查看其他端口,请更改80
OUTPUT:
19 x.174.143.1 13 x.175.135.1 9 x.68.135.1 8 x.144.87.1 7 x.68.150.1 6 x.92.4.1 6 x.188.23.1 5 x.190.164.1 4 x.189.156.1
您可以通过以下方式检查:
netstat -na | grep 'ESTA'
如果你想要pid,用户和命令:
lsof -i tcp:443,80 | egrep 'PID|->' | sort -k9