kubernetes - 使用 nginx-ingress 在 gke 中进行 gzip
问题描述
我正在尝试将 gzip 配置为在运行在具有 GKE 中的 nginx-ingress 的 kubernetes 上的 python 应用程序中工作。但是我发现在 ingress-controller config-map 中启用 gzip 是没有用的,因为我需要在后端启用压缩。
如何在我的 python 应用程序的后端启用压缩以在 nginx 控制器上运行 gzip?
我的主要问题是在stackoverflow中搜索我知道我需要将压缩放在后端,只是不知道该怎么做。
解决方案
特别关注此问题的标题,并扩展用户@Raunak Jhawar 所指出的此类设置示例。
您可以nginx-ingress
通过更新ingress-nginx-controller
configmap来配置压缩数据。
这将适用于路径:
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
pod 的5mb.txt
文件中填充了0
'sService
以及Ingress
将暴露NGINX
pod 的资源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
)的压缩率
我还鼓励您查看以下链接以获取更多参考:
- Stackoverflow.com:如何判断我的服务器是否在提供 GZipped 内容?
- Serverfault.com:使用 Nginx 进行 Gzip 压缩 - 关于图像的链接(我已经学会了艰难的方法)
推荐阅读
- azure-devops - AzureDevops Boards - 任务项未显示,敏捷
- spring-webflux - 由于xhttp请求限制,spring webflux默认响应(sse)不是无用的吗?
- mysql - SELECT之后可以写变量吗?
- c - 设置自定义 GtkAccelLabel
- python - 使用 z3py 查找集合中的最小元素数
- python-3.x - 每当我尝试使用 pip3 为 python3 安装 pip 包时,都会出现很长的错误
- android - Android - CursorAdapter setViewValue 不更改 TextView 显示文本的内容
- python - KMeans 聚类尝试返回名称未定义错误
- arrays - Powershell根据B列的内容从A列的csv创建一个数组
- node.js - 如何在 NodeJS 中显示图像?