Nginx多虚拟主机configuration

根据我们平台的要求,每个网站都将自动与DNSconfiguration一起托pipe,使网站在预订的域名上生效,为每个域和子域configurationNginx。

我们需要为Nginxconfigurationdynamic的虚拟主机configuration,所以我们提出了三个选项,下面会提到。

需要build议哪一个是正确的select,因为我们的网站基础每天增长30到40个新网站,已经有2000多个网站在这个平台上注册。

除此之外的任何更好的select也将被考虑。

大量虚拟主机configuration

这可以通过使用正则expression式使server_namedynamic化来实现。

优点:

  • 单个文件,单个虚拟主机。
  • 无需为每个新的域名注册重新加载Nginx。
  • 可以包含任意数量的域。

缺点:

  • 如果有人发现服务器正在处理任何域请求,就可能导致DDoS攻击。
  • 可以减慢响应,因为每个请求数据库查询将被执行以validation平台是否存在域/子域。

克服问题的方法:

  • 像Memcache或Redis这样的caching可以用来caching所有的域和子域,所以只有很less的数据库查询来检查域和子域的存在(只有在caching失败的情况下)
  • 使用Cloudflare,可以帮助我们预防DDoS。
  • Nginx也可以configuration为阻止对经常发送请求的某些IP的请求。
  • 某些IP地址和机器人负责任何types的攻击也可以阻止使用不好的机器人阻止程序configuration。

单独的虚拟主机文件configuration

一个接收到新域请求的脚本将在一个单独的文件中创build虚拟主机,使其可用于Nginx,启用它并重新加载Nginx。

优点:

  • 单独的虚拟主机注册每个新的域名。
  • 只允许注册的域进行处理。

缺点:

  • 需要为每个注册的新域名触发脚本,这些脚本将以sudo user / root用户身份运行
  • 可能会导致需要由Nginx加载并处理的1000多个文件。
  • 对于每一个新的虚拟主机,Nginx都需要重新加载。
  • 请求处理和pipe理可能会成为一个麻烦,如果太多的域名注册。

解决问题的方法:

  • 对于所有虚拟主机,请使用单个文件而不是多个文件。

单个文件多个主机configuration

接收到新域请求的脚本将在Nginx使用的单个文件中追加新的虚拟主机,并重新加载Nginx。

优点:

  • 分别注册每个新域的虚拟主机。
  • 只允许注册的域进行处理。
  • 将所有虚拟主机的文件数量减less到一个。

缺点:

  • 由于太多的虚拟主机条目,文件可能变得很重。
  • 由于要查看一些虚拟主机,可能会降低Nginx处理速度。
  • 对于每一个新的虚拟主机,Nginx都需要重新加载。

解决问题的方法:

  • 没有其他解决scheme,而不是拥有大量虚拟主机

我们终于安定下来了

单独的虚拟主机文件configuration

原因是,我们平台上注册的大多数网站都是通过子域来提供服务的,很less有网站会拥有自己的域名。 因此,在这种情况下,带有通配符的单个文件将用于大多数网站的目的。 而对于less数拥有自己域名的网站,我们可以拥有单独的主机文件,这可以自动化。

这也有助于为每个子域以及域提供https请求。 我们也可以通过使用Lua脚本来pipe理这些主机文件,在nginx服务器上自动化一些东西。

如果有人有更好的select,请回复您的意见,这将帮助我们很多。