未在运行状况检查请求中设置 SNI 扩展 (Apache v.2.4.35)

Posted

技术标签:

【中文标题】未在运行状况检查请求中设置 SNI 扩展 (Apache v.2.4.35)【英文标题】:SNI extension not set in healthcheck requests (Apache v.2.4.35) 【发布时间】:2019-03-20 21:35:57 【问题描述】:

我面临的问题是,未在使用 TLS 加密的后端的健康检查请求上设置 SNI 扩展。由于健康检查是否定的,这会导致普通请求也被拒绝。

Apache 2.4.35 版

在后端服务器上出现以下错误:

AH02033: No hostname was provided via SNI for a name based virtual host

我也用wireshark调查过,extionsion肯定没有设置。

我的配置如下:

Listen 127.0.0.1:443
ServerName www.localhost.com

<VirtualHost 127.0.0.1:443>
    ServerName www.localhost.com
    ServerAlias localhost.com
    SSLCertificateFile /etc/httpd/ssl/ca.crt
    SSLCertificateKeyFile /etc/httpd/ssl/ca.key
    SSLEngine on
    SSLProxyEngine on

    ProxyHCExpr isok %REQUEST_STATUS =~ /^[23]/
    ProxyHCTemplate template hcinterval=5 hcexpr=isok hcmethod=get hcuri=/healthcheck.php

  <Proxy balancer://mycluster lbmethod=byrequests>
    BalancerMember https://127.0.0.1:8443
    BalancerMember https://127.0.0.1:8444
    ProxyPreserveHost On
    SSLProxyProtocol  TLSv1
  </Proxy>

  <Location />
    ProxyPass  balancer://mycluster/
    ProxyPassReverse  balancer://mycluster/
  </Location>
</VirtualHost>

我读到 ProxyPreserveHost 应该是«on»,但这并不能解决问题.. 我是否遗漏了什么,或者这最终是 mod_proxy_hcheck 中的一个错误? 在此先感谢您的帮助/想法!

【问题讨论】:

错误报告:bz.apache.org/bugzilla/show_bug.cgi?id=62837 【参考方案1】:

官方错误报告中提供的补丁修复了该问题:

https://bz.apache.org/bugzilla/show_bug.cgi?id=62837

【讨论】:

以上是关于未在运行状况检查请求中设置 SNI 扩展 (Apache v.2.4.35)的主要内容,如果未能解决你的问题,请参考以下文章

单选按钮检查属性未在 Ionic 中设置为 True

JavaScript window.location 未在请求标头中设置引用者

未在 cookie 中设置令牌

Doctrine Zend Form 未在帖子中设置数据

CMAKE_CXX_COMPILER 未在 qtcreator 中设置

JAVA_HOME 变量未在 Windows 中设置 [重复]