gke 中的 gzip 与 nginx-ingress

Jon*_*ira 8 gzip google-cloud-platform kubernetes google-kubernetes-engine

我正在尝试配置 gzip 以在 python 应用程序中工作,该应用程序在 GKE 中带有 nginx-ingress 的 kubernetes 上运行。但我发现在入口控制器配置映射中启用 gzip 是没有用的,因为据我了解,我需要在后端启用压缩。

如何在 python 应用程序的后端启用压缩以在 nginx 控制器上运行 gzip?

我的主要问题是在 stackoverflow 中搜索我知道我需要将压缩放在后端,只是不知道如何做到这一点。

Daw*_*ruk 12

特别关注这个问题的标题,并扩展用户@Raunak Jhawar 指出的此类设置的示例。

您可以通过更新configmapnginx-ingress将您的数据配置为压缩数据。ingress-nginx-controller

这将在路径上起作用:

  • Pod----> NGINX Ingress controller- GZIP-> Client(网络浏览器)

要启用此类设置,您需要编辑Ingress控制器配置映射,如下所示:

  • $ kubectl edit configmap -n ingress-nginx ingress-nginx-controller
data: # ADD IF NOT PRESENT
  use-gzip: "true" # ENABLE GZIP COMPRESSION
  gzip-types: "*" # SPECIFY MIME TYPES TO COMPRESS ("*" FOR ALL) 
Run Code Online (Sandbox Code Playgroud)

您可以通过以下链接找到更多参考和配置选项:

附注!

您还可以使用其他编辑资源的方法,例如:$ kubectl patch

此更改将使nginx-ingress-controllerPod 自动重新配置。

我在下面提供了此类设置的示例。


为了检查压缩是否发生以及它是否正常工作,我使用了以下设置:

您可以通过以下任一方式检查您的设置是否支持nginx-ingress压缩gzip

  • Developer tools使用您选择的浏览器进行检查:

    • Chrome-> F12-> Network-> 转到站点(或刷新)并按示例文件(查看Response Header):

    响应头

  • 您还可以使用curl如下命令(来源):

    • $ curl $URL$ --silent --write-out "%{size_download}\n" --output /dev/null- 获取压缩的大小
    • $ curl $URL$ --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null- 获取压缩后的大小(如果支持)

99%以上方法显示了大约(5MB文件压缩到50KB)的压缩率


我还鼓励您查看以下链接以获取更多参考:


Rau*_*war 3

这使得这成为一个 nginx 对话。有很多可用的文档来指导 nginx 压缩的方式和内容。本质上,您必须在 nginx 配置文件中添加一堆与 gzip 相关的设置和选项。

上面分享的步骤是一个很好的开始,它准确地显示了 nginxconf 中需要包含的内容。请注意,最好不要压缩任何/所有入站数据包,因为这实际上会增加 CPU 的计算负担。nginxconf 有一个选项只压缩超过特定大小的数据包。