为了账号安全,请及时绑定邮箱和手机立即绑定

nginx 如何动态加载配置?

nginx 如何动态加载配置?

斯蒂芬大帝 2018-11-13 13:35:46
先说说为什么需要动态加载配置吧:我们正在做一项多站点服务,比如用户username1拥有站点https://username1.example.com,现在这一步我已经解决了,办法是username指定到同名的文件夹下面:   if ($http_host ~* "^(.*)\.example\.com$") {         set $root /var/html/subdomains/$1;     }     root $root;通过上面可以看到,所有的子站点都在/var/html/subdomains这个文件夹下面。但是产生了一个新的问题,我的这个子域名系统要求支持cname解析,即,要求子域名 https://username1.example.com能通过用户自己注册的域名 https://username1-domain.com 打开。因此用户可以把username1-domain.com通过cname解析到username1.example.com,但是这是用户行为,因此需要动态的在系统中把username1-domain.com的请求解析到/var/html/subdomains/username1的server配置中,并且最好能提供https支持,即用户在后台上传自己的https证书,并自动配置到nginx的配置里,以让https://username1-domain.com可以正常的访问。而此时用户注册的域名是没有规则的,无法通过上面的代码块做文件夹的映射。所以上面的动态把任意域名解析到服务器的一个文件夹,该如何操作?谢谢。
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

Nginx自身做不到(我说的是Nginx社区版,企业版Nginx-plus是支持的)。Apache有个.htaccess文件实现动态配置,但是Nginx没有这种设置。

但是Nginx可以通过reload操作实现配置热加载,几乎也是没有业务中断的。所以你其实可以通过配置管理+reload的方案变相实现这个需求。非要严格的动态支持,lua可以考虑(比如换成openresty项目)


查看完整回答
反对 回复 2018-11-13
  • 1 回答
  • 0 关注
  • 1278 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信