在 nginx 或 apache 中使用附加参数自动创建子域名

在 nginx 或 apache 中使用附加参数自动创建子域名

我需要使用 nginx 自动创建和删除子域。我知道我可以使用以下方法来实现:

server {
    listen 80;
    server_name example.com *.example.com;
    root /var/www/example.com/$subdomain;
    set $subdomain "";
    if ($host ~* ^([a-z0-9-\.]+)\.example.com$) {
        set $subdomain $1;
    }
    if ($host ~* ^www.example.com$) {
        set $subdomain "";
    }
}

我可以使用脚本在根目录 /var/www/example.com/ 中创建文件夹,nginx 将为我创建适当的子域。

但是我需要设置一些参数,例如同时连接数和最大连接带宽,这些参数的值将传递给我的脚本。

那么问题是我如何设置这些附加参数?

如果无法使用 nginx 解决我的问题,您可以建议我如何使用 apache 解决它。

谢谢!

答案1

我包含一个子文件夹 ( /etc/nginx/confs ) 并为每个子域创建一个新文件。我正在运行 rails 应用程序,因此我需要在每个子域中进行相当多的配置。我有一个后台 beanstalkd 工作程序,当有人注册时,它会安装应用程序、创建 nginx conf 并重新加载 nginx。

答案2

如果我理解正确的话,你现在所拥有的功能可以通过 apache 上的 mod_vhost_alias 来实现,因此你的行为与 nginx 上的行为完全相同。本手册页

至于其余参数,我建议您使用 mod_qos 并将它们设置在要实时提供文件的目录中的 .htaccess 文件中。

如果你对这篇文章发表评论,我可以回答你的问题:)

希望这可以帮助!

答案3

没有办法完全按照您的意愿行事。Nginx 不是为大规模托管而编写的,而是为高流量网站而编写的。

使用 Nginx 处理此问题的正确方法是不要使用一个包罗万象的服务器块,而是为每个子域创建一个服务器块。手动创建这些服务器块显然很繁琐,因此强烈建议编写一个生成它们的脚本,而且不要太复杂。

相关内容