我正在尝试配置gzip以使其在GKE中使用nginx-ingress在kubernetes上运行的python应用程序中工作。但是我发现在Ingress-controller config-map中启用gzip是没有用的,因为据我所知,我需要在后端启用压缩。
如何在python应用程序的后端启用压缩以在nginx控制器上运行gzip?
我的主要问题是,我在stackoverflow中进行搜索,我知道我需要将压缩放在后端,只是不知道该怎么做。
答案 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 Controller
的产生者:
NGINX
窗格,其中包含一个5mb.txt
文件,其中填充了 0
Service
和Ingress
资源将用NGINX
公开NGINX Ingress Controller
窗格您可以通过以下任一方法检查设置为nginx-ingress
的设置是否支持gzip
压缩:
使用您选择的浏览器通过Developer tools
进行检查:
Chrome
-> F12
-> Network
->转到网站(或刷新)并按示例文件(在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有一个选项,仅压缩超过特定大小的数据包。