Apache 中是否有办法限制某个月内可以查看网站的用户数量?我需要针对单个虚拟主机执行此操作。
大致如下:
<VirtualHost *:80>
ServerName website.com
DocumentRoot "/var/www/website.com/public"
**MONTHLY_USER_LIMIT** = 5000
</VirtualHost>
Apache 中有什么可以做到这一点(或 nginx)吗?
谢谢!
答案1
不,但你可以配置访问日志,转到一个进行计数然后关闭网站的程序。你必须让它能够适应 Apache 重启。
答案2
如果您在 Apache 中使用 PHP 之类的东西,那么这很简单。您可以使用 cookie(最佳方式)手动实现每个用户的计数,或者如果他们禁用了 cookie,可以使用一些巧妙的方法。这类东西属于 PHP 脚本。
似乎对于像您这样的设置,您可能有一个用于身份验证的用户/密码哈希,因此当他们登录时,请记录它。每次他们开始新会话时,都记录它。如果他们达到 5000 个会话,则返回 401 错误或其他说明他们已超出每月分配的浏览量的信息。
如果这确实是基于每个用户,那么服务器端脚本将是最有意义的。您甚至不需要数据库,一个简单的文本文件就可以解决问题。
我很确定 PHP 脚本可以访问它正在被访问的主机(只需查看 URL)。