我有几个域(每个域都有自己的虚拟主机)使用,我有一个用户列表,我通过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地址吗?
答案 0 :(得分:0)
要回答您的问题,您可以在某个地方创建一个包含IP列表的文件,然后在每个虚拟主机的文件夹中为其创建符号链接。
如果你没有为每个虚拟主机强制执行PHP open_basedir
指令(你应该),你可以在某个地方创建一个文件,给用户运行web服务器作为读取该文件的权限,并使用打开它时file()
中该文件的绝对路径。
现在,让我们谈谈你想要实现的目标;您想禁止用户访问您的网站。
如果您拥有对服务器的root访问权限,并且它只托管一个网站(或者您希望禁止该服务器托管的所有网站中的用户),那么如果您拥有大量的IP,则应使用IPtables和IPset。禁止,因为数据包甚至无法到达您的网络服务器,所以效率会更高。
现在,如果你没有root访问权限或者你需要per-virtualhost banlist,你应该使用你的web服务器配置(或.htaccess
文件),我假设你使用Apache所以检查{ {3}}有关如何拒绝访问主机的信息;一如既往,它比使用PHP更有效率。