编程技术分享平台

网站首页 > 技术教程 正文

在Ingress-nginx中如何配置gzip压缩

xnh888 2024-10-03 04:45:46 技术教程 137 ℃ 0 评论

工作中使用的Kubernetes ingress controller是Ingress-nginx ,默认没有启用压缩,这篇文章就来介绍如何启用压缩,来减少响应的数据大小。

Nginx使用ngx_http_gzip_module模块来压缩返回给浏览器的数据,Ingress-nginx默认是启用这个模块的,所以,开启压缩只需要修改配置即可,不需要再考虑模块ngx_http_gzip_module的集成,压缩可以选择全局开启,即在http层开启,也可以选择针对选定的域名开启,也就是在“server”层开启。

  • 全局开启

在kubernetes中找到Ingress-nginx的ConfigMap,

[root@k8s-master-1 ~]# kc get configmap -n ingress-controller
NAME                              DATA   AGE
ingress-controller-leader-nginx   0      1y9d
ingress-nginx-controller          1    1y9d

ingress-nginx-controller是Ingress-nginx的ConfigMap,编辑这个ConfigMap,添加如下配置:

data:
  use-gzip: "true"
  gzip-level: "5"
  gzip-types: "text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript"

这样便在全局作用域启用了gzip压缩。

  • 选定域名开启

Ingress-nginx修改全局作用域的配置,大都会使用ConfigMap实现,对于"server"作用域的修改可以使用"annotations",比如要修改的域名为"app.example.com",找到包含这个域名的Ingress,增加下面配置即可,

......
    nginx.ingress.kubernetes.io/server-snippet: |
      gzip on;
      gzip_disable "MSIE [1-6]\.";
      gzip_vary on;
      gzip_proxied any;
      gzip_comp_level 5;
      gzip_min_length 512;
      gzip_buffers 16 128k;
      gzip_http_version 1.1;
      gzip_types "*";
......

每个指令的具体含义,可参考Module ngx_http_gzip_module

如何判断添加的配置已生效,也很简单,使用curl命令,如下:

[root@k8s-master-1 ~]# curl -I -H "Accept-Encoding: gzip" https://app.example.com
HTTP/1.1 200 OK
Date: Sun, 07 Apr 2024 07:53:51 GMT
Connection: keep-alive
Vary: Accept-Encoding
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Encoding: gzip

如果响应头包含“Content-Encoding: gzip”,那么恭喜你,一切如你所愿。

希望这篇文档能帮助到你!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表