marathon-lb上添加多证书并实现泛解析代理域名 之 nginx实现marathon-lb的vhosts泛域名代理
marathon-lb代理https域名, 需要将证书当道lb上。nginx不需要开启443端口,nginx需要配置 vhost 才能访问。
marathon添加证书连接: marathon-lb上添加多个证书
域名都是通过 vhost 虚拟主机方式访问。这样nginx才能拿到 x_forwarded_for 客户端的IP地址。LB才会通过HTTP方式代理,否则会走TCP代理。
nginx上回有很多个域名,我们不能添加一个域名就修改一次 vhosts ,所以我们尝试添加 泛域名。
nginx 发布的json文件:
1 | { |
其中参数说明:
1 | "HAPROXY_0_HTTP_FRONTEND_ACL_ONLY": " acl host_{cleanedUpHostname} hdr(host) -m end .{hostname}\n", |
这个是http的默认解析。因为http会有很多二级域名,所以配置默认解析。
1 | "HAPROXY_0_HTTPS_FRONTEND_ACL": " use_backend {backend} if {{ ssl_fc_sni -m end .{hostname} }}\n", |
这个是配置https的泛解析,会在LB的配置的vhosts域名前面加“.”点, “end .{hostname} ” 那个点。
验证
可以查看LB的配置
1 | curl 192.168.53.200:9090/_haproxy_getconfig |
可以看到 http 的 use_backend 是marathon上nginx的id
https 的end 后面的二级域名前面都添加了 “.”
这样 shiningtest1.com 和 shiningtest2.com 所有的域名都会转发到nginx上了。
相关参考文档:https://docs.mesosphere.com/services/marathon-lb/1.13/mlb-configuration/