用nginx入口在gke中压缩gzip

时间:2019-01-22 18:15:55

标签: kubernetes google-cloud-platform gzip google-kubernetes-engine

我正在尝试配置gzip以使其在GKE中使用nginx-ingress在kubernetes上运行的python应用程序中工作。但是我发现在Ingress-controller config-map中启用gzip是没有用的,因为据我所知,我需要在后端启用压缩。

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

我的主要问题是,我在stackoverflow中进行搜索,我知道我需要将压缩放在后端,只是不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

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

您可以通过更新nginx-ingress configmap 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) 

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

旁注!

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

此更改将使nginx-ingress-controller Pod能够自动重新配置。

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


要检查压缩是否发生并且是否正常工作,我使用了以下设置:

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

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

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

    RESPONSE HEADER

  • 您还可以使用curl命令,如下所示(source):

    • $ 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


我也建议您检查以下链接以获取其他参考:

答案 1 :(得分:0)

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

上面分享的内容是一个很好的入门,它准确显示了nginx conf上需要包含的内容。请注意,作为一种好的做法,请勿压缩任何/所有入站数据包,因为这实际上会增加CPU的计算负担。 nginx conf有一个选项,仅压缩超过特定大小的数据包。