我正在创办一家小型网络托管公司,以学习系统管理知识,我遇到的问题之一是如何限制每个虚拟主机 (Debain/nginx) 的带宽和磁盘空间?或者我的做法不对,不应该使用虚拟主机?
答案1
我用过mod_bandwidth限制带宽。它可以按目录、按文件等使用……因此,您只需按 VirtualHost 配置它即可。
对于磁盘空间,只需使用配额。为每个客户创建一个 unix 帐户,并为他们分配配额。这应该在网络上有很好的记录。
答案2
通过快速谷歌搜索,我发现可以使用 Squid 代理来设置数据队列,即“数据池”。显然,您也可以使用 IPROUTE2 和 TC(无法发布链接,我不够厉害)
从http://www.faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html#AEN65
除了常规缓存之外,Squid 还有一个称为延迟池的特殊功能。借助延迟池,可以根据任何给定 URL 中存在的所谓“魔法词”以合理的方式限制互联网流量。例如,魔法词可以是“.mp3”、“.exe”或“.avi”等。URL 的任何不同部分(例如 .avi)都可以定义为魔法词。
另请参阅 serverwatch.com 上的一篇文章,标题为“使用 Squid 代理控制带宽”
Squid 可能是最简单的方法,而且你也可以用它做很多其他很酷的事情。
答案3
这并不简单。我怀疑,除非您在 Web 服务器前面放置脚本代理,否则仅使用虚拟主机来强制执行限制是不可能的(并且这只能解决带宽问题,除非您将文件上传限制到脚本 Web 界面)。
但从商业角度来看,销售包含 X 带宽和 Y 磁盘使用量的套餐,然后向客户收取超额费用(您可以从磁盘占用空间和访问日志中轻松衡量)肯定更有意义。
C。
答案4
要限制总带宽使用量,请参阅 KikoV 的回答,我正在讨论限制磁盘空间。
事实上,没有直接的方法来限制磁盘空间,但您有两种选择:
- 您可以安排一个脚本,例如每天计算已用的磁盘空间并禁止/警告超出的客户端。
- 您可以为每个客户端创建一个系统用户并使用文件系统配额管理器。阅读本文了解更多信息。