nginx - 在配置为 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 配置的任何想法?
解决方案
推荐阅读
- postgresql - 如果孩子对应于 Sequelize/PostgreSQL 中的 Where 子句,如何获得父母?
- java - 来自文件的二维字符数组
- java - 如何使用 java 处理 tar gz 中的文件
- ios - 由于未定义的符号而无法构建 ios 应用程序:_OBJC_CLASS_$_GADRewardBasedVideoAd
- python - 我收到 Travis CI 构建错误“未找到模块”,但我不知道为什么
- python - 使用 Python 学习自动化,并且对这段代码有疑问。也许另一双眼睛?
- python - 如何在函数外部访问在函数内部创建的特定变量。即使该函数中有多个其他变量
- node.js - MongoDB GridFs:grid.mongo.ObjectID 不是构造函数
- python-3.x - 来自 Django 模板中来自同一父级的其他子级的访问列
- latex - 在单独的 .yaml 文件中添加 header-includes 和 fancyhdr “breaks” pandoc