在多个虚拟主机之间共享文件


Sharing a file between multiple virtualhosts

我有几个域(每个域都有自己的虚拟主机)使用,我有一个按IP阻止域的用户列表这是我目前在每个虚拟主机上检查IP列表的方式:

file("../checkip.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)

与其将相同的确切文件上传到我拥有的每个域,我是否可以使用类似以下内容:

file("http://maindomain.com/checkip.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)

这样,我可以继续只更新一个文件并在多个域中使用该唯一文件,还是该文件必须位于同一域中?

如果我尝试执行此操作的方法不起作用,我还能做些什么来从一个位置的一个文件中提取 IP 地址?

要回答您的问题,您可以在包含IP列表的某个地方创建一个文件,然后在每个虚拟主机的文件夹中创建指向它的符号链接。

如果你不对每个虚拟主机强制执行PHP的open_basedir指令(你应该这样做),你可以在某处创建一个文件,授予用户Web服务器运行的权限来读取该文件,并在打开该文件时file()使用该文件的绝对路径。

现在,让我们谈谈您要实现的目标;您想禁止用户访问您的网站。

如果您对服务器具有root访问权限,并且它只托管一个网站(或者您想禁止该服务器托管的所有网站的用户),则应使用IPtables和IPset,如果您要禁止大量IP,这将更有效,因为数据包甚至不会到达您的Web服务器。

现在,如果您没有root访问权限,或者您需要每个虚拟主机的禁止列表,则应使用Web服务器的配置(或.htaccess文件),我假设您使用Apache,因此请查看他们的文档以获取有关如何拒绝访问主机的信息; 一如既往,它仍然比使用PHP更有效。