0

我们有一个在 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 客户遇到过这个问题,并找到了更简单的解决方案?

4

1 回答 1

0

解决方案 2 有一个简单的规则来删除 cron 上的旧日志文件应该足够好。

我不是万神殿用户,但如果那是“更简单”,也可以使用模块来做到这一点 http://drupalnotes.com/post/64855594431/the-search-for-the-ideal-drupal-7-statistics

于 2015-04-29T15:46:51.793 回答