kubernetes - 使用 nginx-ingress 在 gke 中使用 gzip

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

我正在尝试将 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) 
    
    您可以通过以下链接找到更多引用和配置选项:
  • Kubernetes.github.io: Ingress NGINX: User guide: Nginx-configuration: Configmap

  • A side note!

    You can also use other methods of editing resources like: $ kubectl patch


    此更改将使 nginx-ingress-controller Pod 将自动重新配置。
    我在下面包含了此类设置的示例。

    要检查压缩是否发生以及它是否正常工作,我使用了以下设置:
  • NGINX Ingress Controller产生于:
  • Kubernetes.github.io: Ingress NGINX: Deploy: GCE-GKE

  • NGINX带有 5mb.txt 的 pods 文件充满 0
  • ServiceIngress将公开 NGINX 的资源 pods 带 NGINX Ingress Controller

  • 您可以使用 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 )

    我还鼓励您查看以下链接以获取更多引用:
  • Stackoverflow.com: How can I tell if my server is serving GZipped content?
  • Serverfault.com: Gzip compression with nginx - 关于图像的链接(我已经学会了艰难的方式)
  • 关于kubernetes - 使用 nginx-ingress 在 gke 中使用 gzip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54314250/

    相关文章:

    kubernetes - “Error: forwarding ports: Upgrade request required” kubernetes 集群 helm 错误

    kubernetes - 如何检查当前使用的kubelet配置?

    php - error_handlers 页面在部署时不显示

    python - 如何在python3标准应用引擎项目中访问谷歌云库?

    使用 Deflater 的 Java 多线程压缩

    Apache gzip 解压

    kubernetes - 无法将内部 API 添加到 GKE 上运行的 KONG api 网关

    google-cloud-platform - GCP 防火墙规则是单向应用还是双向应用?

    linux - 将文件合二为一

    kubernetes - 如何在traefik中配置上传大文件速度限制?