我可以使用与HAProxy匹配的通配符SNI吗?

时间:2015-07-07 07:34:07

标签: haproxy wildcard-subdomain

我正在寻找一个HAProxy匹配SNI通配符的例子,我的搜索提出了类似的标题但无关的证书问题。

具体来说,我需要使用acme / letsencyrpt为dvsni路由nonce域。

frontend foo_ft_https
    mode tcp
    option tcplog
    bind 0.0.0.0:443

    acl foo_app_letsencrypt req.ssl_sni -i *.acme.invalid
    use_backend foo_bk_letsencrypt if foo_app_letsencrypt

    default_backend foo_bk_default

backend foo_bk_letsencrypt
    mode tcp
    option tcplog

    server foo_srv_letsencrypt 127.0.0.1:3443

backend foo_bk_default
    mode tcp
    option tcplog

    server foo_srv_default 127.0.0.1:8443

注意:所有任意名称都以'foo_'为前缀,以便读者可以轻松地将它们与关键字,指令等区分开来。

2 个答案:

答案 0 :(得分:7)

更改

acl foo_app_letsencrypt req.ssl_sni -i *.acme.invalid

acl foo_app_letsencrypt req.ssl_sni -m end .acme.invalid

官方文档中没有提到它 明确地https://cbonte.github.io/haproxy-dconv/configuration-1.5.html,但我能够找到其他资源来引导我得到正确的结果:

请注意,如果您要尝试第一个示例,它将“正常”,但“”将被解释为文字“”,而不是通配符。

答案 1 :(得分:2)

即使这是一个非常老的问题,我也想分享这个解决方案,因为这仍然是第一个Google的搜索结果:

CoolAJ86提供的解决方案不适用于我(它可能适用于旧版本的HAProxy)。您可以这样使用ssl_fc_sni_end而不是ssl_fc_sni:

optimizer = tf.train.GradientDescentOptimizer(learning_rate)
gvs = optimizer.compute_gradients(loss_op)
capped_gvs = [(grad, tf.clip_by_norm(var,1, axes = None)) for grad, var in gvs]
train_op = optimizer.apply_gradients(capped_gvs)

它将完成工作!