工作中使用的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-controllerNAME DATA AGEingress-controller-leader-nginx 0 1y9dingress-nginx-controller 1 1y9dingress-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.comHTTP/1.1 200 OKDate: Sun, 07 Apr 2024 07:53:51 GMTConnection: keep-aliveVary: Accept-EncodingVary: OriginVary: Access-Control-Request-MethodVary: Access-Control-Request-HeadersContent-Encoding: gzip如果响应头包含“Content-Encoding: gzip”,那么恭喜你,一切如你所愿。
希望这篇文档能帮助到你!
转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/189299.html