gpt4 book ai didi

haproxy - HA Proxy 支持 http 模式下的 HTTP/2 后端服务器

转载 作者:行者123 更新时间:2023-12-04 01:59:23 27 4
gpt4 key购买 nike

我有一个支持 HTTP/2 并在 TLS1.2 上运行的 tomcat 9.0.2 服务器。下面是 server.xml 中的连接器配置

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
address="0.0.0.0"
maxThreads="150" SSLEnabled="true" asyncTimeout="10000" maxHeaderCount="50"
maxPostSize="1048576" scheme="https" secure="true" compression="force"
compressionMinSize="2048" maxConnections="10000">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig protocols="TLSv1.2">
<Certificate certificateKeystoreFile="${keystore.file.path}"
certificateKeystorePassword="${keystore.password}"
certificateKeyAlias="${server.cert.alias}"
certificateKeystoreType="${keystore.type}" />
</SSLHostConfig>
</Connector>

我使用的是 HA Proxy 1.8,配置如下

frontend  mydomain-ux
mode http
bind <ip>:8080 ssl crt /etc/certs/mydomain.com.cert.pem
http-request set-var(txn.path) path
acl mydomain hdr_end(host) -i mydomain.com
use_backend mydomain_server if mydomain

backend mydomain_server
mode http
server mydomain_backeend_server <server-ip>:8443 ssl

因为我有多个基于主机的后端,我不能使用 TCP 模式并通过 HTTP/2 SSL 终止

有没有办法在后端模式 http 中终止 HTTP/2?

最佳答案

据我所知,HAProxy 在后端不支持 HTTP/2。他们只有recently announced front end support . (2019 年 1 月 18 日编辑 - 自添加到 v1.9 - https://www.haproxy.com/blog/haproxy-1-9-has-arrived/)。

即使没有后端 HTTP/2 支持,也可以终止 HTTPS 上的前端,然后转发到 TCP 上的后端(没有 HTTPS),并且它可能 可以使用 HTTPS 的 SNI 部分来执行您想要的可选路由(顺便说一句,这是完全未经测试的):

frontend  mydomain-ux
mode tcp
bind <ip>:8080 ssl crt /etc/certs/mydomain.com.cert.pem alpn h2,http/1.1
use_backend mydomain_server if { ssl_fc_sni mydomain.com}
use_backend mydomain_server2 if { ssl_fc_sni mydomain2.com }
default_backend mydomain_server

backend mydomain_server
mode tcp
server mydomain_backeend_server <server-ip>:8081

这将允许您的后端在端口 8081 上使用 HTTP/2 但没有 HTTPS(端口 8443),甚至可以在 1.8 之前的 HAProxy 上运行(当添加了前端 HTTP/2 支持时)。但是,这意味着您的 Tomcat 需要在没有 SSL 的情况下进行设置。

HAProxy 也不建议使用 SNI 主机进行路由,如 this answer 中所述在mailing thread it refers to .此外,SNI 支持并不普遍(尽管就所有实际意图而言,它是普遍的,除非在 XP 上支持真正的旧浏览器,如 IE8)。

您应该问自己的另一个问题是 if you really need HTTP/2 in the backend or if just supporting this at the HAProxy level is enough

关于haproxy - HA Proxy 支持 http 模式下的 HTTP/2 后端服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48467581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com