首页 > 解决方案 > 在配置为 nginx 服务器上方的反向代理的 tomcat 8.5.63 上使用 http2 启用 gzip 配置时遇到问题

问题描述

我们使用 tomcat 作为反向代理服务器,它在内部将我们的 html/css/js 请求转发到部署在 nginx 服务器上的应用程序。我们已经在 tomcat reverseproxy 上启用了 http2 和 gzip 配置,如下所示。

 <Connector
                SSLEnabled="true"
                acceptCount="25"
                address="10.xx.x.x"
                ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA"
                clientAuth="want"
                compressibleMimeType="text/html,text/xml,text/json,text/javascript,text/css,text/plain,application/json,application/javascript,application/xml,application/xml+xhtml,application/swagger-v20+json,application/swagger-v20+yaml"
                compression="on"
                compressionMinSize="1024"
                connectionTimeout="30000"
                disableUploadTimeout="true"
                keyAlias="tomcat"
                maxHttpHeaderSize="65536"
                maxThreads="200"
                minSpareThreads="5"
                noCompressionStrongETag="false"
                noCompressionUserAgents="gozilla, traviata"
                port="443"
                scheme="https"
                secure="true"
                server="MyTomcat"
                socket.soReuseAddress="true"
                sslEnabledProtocols="TLSv1.1,TLSv1.2"
                sslProtocol="TLS"
                >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json" compression="on" compressionMinSize="1024" useSendfile="false" />
</Connector>

我们观察到,使用 http1.1 gzip 配置可以很好地处理驻留在 nginx 服务器中的资产。但是当我们启用 http2 时,我们可以看到协议切换到 http2 但 gzip 配置未启用,服务器标头也未覆盖。对于驻留在 nginx 服务器标头中的断言,其值为 server: nginx/1.20.1。

关于如何使用 http2 启用 gzip 配置的任何想法?

标签: nginxreverse-proxytomcat8

解决方案


推荐阅读