Nginx 配置/站点限制

Nginx 配置/站点限制

我目前使用 Nginx 托管了大约 30 个流量很低的网站(每天约 3 万页面浏览量),没有任何问题。我很好奇,假设至少对各种事物进行一定数量的配置,您可以在服务器上轻松运行多少个网站。

这是出于好奇,因为一个网站使用了以下主机:

http://www.forest.net/services/shared/webhosting.php

我计算了一下,如果 Nginx 的配置数量不至于太高,那么在 100MB 的存储空间和 3GB 的数据量下,你几乎可以免费托管 5,000 个几乎没有流量的网站,而且没有任何问题。我告诉他们不要升级到这家公司,而是考虑换一家。

那么专家们怎么说呢?我的设置应该在什么时候停止?有谁想试一试我的荒谬假设吗?

(注:链接的网站自 2003 年 12 月以来就没有改变过价格和容量 [wayback machine],我觉得这很有趣。但我对在那里托管的任何人感到遗憾。)

答案1

我有一个与您类似的设置 - 少数由 PHP 驱动的低容量站点 - 在这种情况下,我发现 nginx 的配置没有问题。我托管的许多站点都有多个子域,但除了一两个“虚拟主机”外,默认配置适用于所有子域 - 即使有几千个虚拟主机,我也不认为 nginx 会成为问题。但是,我认为单个服务器也不适合这种情况。

首先,如果您正在运行 PHP(在托管环境中相当常见),那么您可能正在运行 php-fpm 或反向代理到 apache。您可能需要一些安全性,因此您的数千个用户都以自己的用户名运行。通常,每个用户都会生成自己的 php 进程 - 然后需要自己的内存(而使用 php-fpm 时,默认设置不允许您为特定池运行“服务器”)。因此,我认为在这种情况下内存是一个更大的问题。

对于 5000 个站点,我想您不认识您所托管的大多数站点的所有者,也无法亲自协助每个站点进行设计 - 许多人使用 .htaccess 文件 - 这意味着您可能需要支持 Apache,即反向代理 - 这可能无法扩展到这些数字(尤其是通过 apache 运行 suExec 或 FastCGI 时)。

其次,我推测数据库无法像 nginx 那样很好地处理负载的增加。一些执行良好的缓存(通过 nginx 或另一层,如 Varnish)可能能够减少这种影响 - 不过,如果您已经这样做了,那么“扩展”问题仍然存在。

最后,我认为 5000 个网站如果出现“单点故障”,可能会让一些人不高兴 - 如果您的一台服务器上有 30 个网站瘫痪了,您会有几个客户不高兴,如果您的一台服务器上有 5000 个网站瘫痪了,我怀疑这是否会令人愉快(一个小型​​的高可用性集群 - 甚至可能是两个节点)可能会对此有所帮助,但可能还不够。

(我没有实质性的数据来​​支持我的观点,因此这个答案更多的是猜测而不是事实)

相关内容