我们有一个在 Pantheon 下运行的 Drupal 站点。我们希望保留一个类似于 Apache 的 access.log 的日志,显示每个页面命中的 REQUEST_URI 以及原始 IP 地址。这样,如果我们观察到有人滥用该网站,我们可以通过日志回顾并获取滥用者的 IP 地址。我认为几乎所有万神殿客户都想要这种能力,这就是为什么我很惊讶它似乎如此困难。我希望我只是错过了一些明显的东西。我研究了两种可能的途径:
(1) 使用 nginx-access.log 文件。这包含了我需要的所有信息,除了存储的 IP 地址是内部 Pantheon IP 地址(例如 10.223.177.45),而不是原始 IP 地址。我向 Pantheon 支持部门询问了有关获取存储在 nginx-access.log 中的原始 IP 地址的问题,并得到了以下回复:
您要求我们更改日志文件的存储方式,这不会发生。这些设置在我们的整个平台上通用设置。正如我所说,10.223.177.45 是 Pantheon 的内部IP 地址。
没有办法做到这一点。
我很难相信“没有办法做到这一点”,因为原始 IP 地址是通过 PHP 提供的$_SERVER["REMOTE_ADDR"]
. 显然,他们有这些信息,但出于某种原因不想将其存储在 nginx-access.log 中。
(2) 从 PHP 构建我们自己的日志文件,存储$_SERVER["REMOTE_ADDR"]
和$_SERVER["REQUEST_URI"]
. 我们已经在 sites/default/settings.php 中有一堆自定义代码,我们可以添加一些用于file_put_contents
向日志文件添加一行的内容。也许是这样的:
<?php file_put_contents('sites/default/files/private/access.log', $_SERVER['REMOTE_ADDR'] . ' ' . date('Y-m-d H:i:s') . ' ' . $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\n", FILE_APPEND); ?>
但是,当它已满时,我们必须轮换该日志文件。我想我们可以做到这一点......这只是一个维护麻烦。
以前有没有其他 Pantheon 客户遇到过这个问题,并找到了更简单的解决方案?