我正在尝试将 gzip 配置为在 Python 应用程序中工作,该应用程序在 GKE 中具有 nginx-ingress 的 kubernetes 上运行。但是我发现在 ingress-controller config-map 中启用 gzip 是没有用的,因为我需要在后端启用压缩,因为我理解它。
如何在 python 应用程序的后端启用压缩以在 nginx Controller 上运行 gzip?
我的主要问题是在 stackoverflow 中搜索我知道我需要将压缩放在后端,只是不知道该怎么做。
最佳答案
特别关注这个问题的标题,并扩展了用户@Raunak Jhawar 指出的此类设置的示例。
您可以配置您的 nginx-ingress
通过更新 ingress-nginx-controller
来压缩数据配置映射 .
这将适用于路径:
Pod
----> NGINX Ingress controller
- GZIP
-> Client
(网页浏览器) 要启用此类设置,您需要编辑
Ingress
Controller 配置映射如下:$ 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)
您可以通过以下链接找到更多引用和配置选项:A side note!
You can also use other methods of editing resources like:
$ kubectl patch
此更改将使
nginx-ingress-controller
Pod 将自动重新配置。我在下面包含了此类设置的示例。
要检查压缩是否发生以及它是否正常工作,我使用了以下设置:
NGINX Ingress Controller
产生于:NGINX
带有 5mb.txt
的 pods 文件充满 0
的 Service
和 Ingress
将公开 NGINX
的资源 pods 带 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
)我还鼓励您查看以下链接以获取更多引用:
关于kubernetes - 使用 nginx-ingress 在 gke 中使用 gzip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54314250/