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