先说说为什么需要动态加载配置吧:我们正在做一项多站点服务,比如用户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项目)
- 1 回答
- 0 关注
- 1278 浏览
添加回答
举报
0/150
提交
取消