点击上方蓝色字体,关注我们

读完需 8 分钟

速读需 4 分钟

k8s集群默认安装的ingress-nginx直接投入测试或生产使用,其不合适的配置参数可能会导致一些访问报错。
例如:

  • “413 Request Entity Too Large”

  • “503 Service Unavailable”

此时我们就需要调整ingress-nginx的配置参数来解决问题,有以下三种方式:

  • ConfigMap
    使用ConfigMap设置Nginx的全局配置文件

  • Annotations
    使用Annotations设置特定的Server的配置文件,如:某个hello.test.cn

  • Custom Template
    使用模板设置更多的特定Server的配置文件

在此只介绍下比较常见的ConfigMap、Annotations两种方式。

需求

在此主要以解决以下两个问题为例:

  1. “413 Request Entity Too Large”
    此问题为上传文件过大导致,nginx默认限制为1M,可以通过调整client_max_body_size参数解决。

  2. upstream超时
    upstream超市可能会导致502、503、504等问题,nginx默认超时时间为60s,可以通过设置proxy_read_timeoutproxy_connect_timeoutproxy_send_timeout参数解决。

ConfigMap

1. 默认配置

默认ingress-nginx的ConfigMap有以下三种并且数据都为空

# 默认的三种ConfigMap# kubectl get cm -n ingress-nginxNAME                              DATA   AGEingress-controller-leader-nginx   0      10dnginx-configuration               0      10dtcp-services                      0      10dudp-services                      0      10d# ConfigMap定义# vim mandatory# 截取ConfigMap部分---kind: ConfigMapapiVersion: v1metadata:  name: nginx-configuration  namespace: ingress-nginx  labels:    app.kubernetes.io/name: ingress-nginx    app.kubernetes.io/part-of: ingress-nginx---kind: ConfigMapapiVersion: v1metadata:  name: tcp-services  namespace: ingress-nginx  labels:    app.kubernetes.io/name: ingress-nginx    app.kubernetes.io/part-of: ingress-nginx---kind: ConfigMapapiVersion: v1metadata:  name: udp-services  namespace: ingress-nginx  labels:    app.kubernetes.io/name: ingress-nginx    app.kubernetes.io/part-of: ingress-nginx

其中:

  • 三种ConfigMap都没有Data设置,因此数据定义都为空;

  • nginx-ingress-controller分别引用nginx-configuration、 tcp-services、 udp-services三个ConfigMap。

2.自定义设置
调整参数我们需要选择对应的ConfigMap,经过测试需要选择nginx-configuration。

# vim global_configmap.yaml# ingress-nginx 全局配置文件apiVersion: v1kind: ConfigMapmetadata:  name: nginx-configuration  namespace: ingress-nginx  labels:    app.kubernetes.io/name: ingress-nginx    app.kubernetes.io/part-of: ingress-nginxdata:  proxy-connect-timeout: "300"  proxy-read-timeout: "300"  proxy-send-timeout: "300"  proxy-body-size: "200m"# 应用后,nginx会自动reload生效kubectl apply -f global_configmap.yaml# 检查配置文件kubectl exec -it nginx-ingress-controller-gmzq6 -n ingress-nginx -- cat /etc/nginx/nginx.conf

注意:

  • 使用nginx-configuration,而不是tcp-services和udp-services。

  • 经测试,按照官网"https://kubernetes.github.io/ingress-nginx/examples/customization/custom-configuration/"设置,ConfigMap使用ingress-nginx-controller是不生效的,因为没有ingress-nginx-controller这个ConfigMap,需要使用nginx-configuration。

$ cat configmap.yamlapiVersion: v1data:  proxy-connect-timeout: "10"  proxy-read-timeout: "120"  proxy-send-timeout: "120"kind: ConfigMapmetadata:  name: ingress-nginx-controller
  • 在此我将全局配置文件单独列出,也可以将其合并到mandatory.yaml中。

Annotations

ConfigMap适用于全局配置,但是有时我们只需要针对某个特定的站点设置,此时就需要用到Annotations。

例如:要对hello.test.cn 这个站设置client_max_body_size解决上传文件太大问题。

# vim hellworld.yaml# 单独设置IngressapiVersion: extensions/v1beta1kind: Ingressmetadata:  name: helloworld  namespace: test  annotations:    nginx.ingress.kubernetes.io/proxy-body-size: 300mspec:  rules:    - host: hello.test.cn      http:        paths:          - path: /            backend:              serviceName: helloworld              servicePort: 8080# 应用# kubectl apply -f helloworld.yaml# 验证# kubectl exec -it nginx-ingress-controller-gmzq6 -n ingress-nginx -- cat /etc/ngclient_max_body_size                    300m;

此时client_max_body_size只针对hello.test.cn 这个server生效,其他server仍然使用的是全局配置文件。

总结

在ingress-nginx的配置文件/etc/nginx/nginx.conf中指定了Global filtersTCP servicesUDP services区域,应该分别对应三个ConfigMap。

熟悉了ingress-nginx的自定义配置后,我们就可以灵活修改配置参数了。

k8s node节点停机维护,pod如何迁移?

K8S+Jenkins实现SpringBoot项目的CI/CD

Jenkins扩展共享库进阶

Ventoy:新一代多系统启动U盘解决方案

面对中小企业的开源运维平台spug

Docker动态构建Jenkins Slave

关注我们

nginx 上传 文件超时设置_Ingressnginx自定义配置文件相关推荐

  1. nginx 上传 文件超时设置_nginx限制上传大小和超时时间设置说明/php限制上传大小...

    现象说明: 在服务器上部署了一套后台环境,使用的是nginx反向代理tomcat架构,在后台里上传一个70M的视频文件,上传到一半就失效了! 原因是nginx配置里限制了上传文件的大小 client_ ...

  2. nginx 上传 文件超时设置_Nginx大文件上传413和500问题排查总结

    背景 前几天上传一个300MB的文件,发现报错,这里说明一下,用户的请求会通过Nginx代理(负载均衡)到应用服务器. 413问题解决 错误信息为"413 Request Entity To ...

  3. nginx 上传 文件超时设置_Nginx在高并发下的性能优化点!有这篇就够了!

    点击上方"java进阶架构师",选择右上角"置顶公众号" 20大进阶架构专题每日送达 前面几周,讲过Nginx的日志配置:Nginx | 超详细!Nginx 日 ...

  4. 【上传】Nginx 上传文件

    本文包含知识点: 1.nginx服务搭建 2.nginx文件上传模块搭建 3.文件重命名服务搭建 3.nginx整体配置 4.测试 引言 一般可以应用在上传不是跟频繁的场景,都可以采用Nginx上传文 ...

  5. ftp服务器上传文件权限设置,ftp服务器 上传文件权限设置

    ftp服务器 上传文件权限设置 内容精选 换一换 华为云对象存储服务帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用对 ...

  6. nginx 限制文件上传速度_nginx上传文件速度慢 Nginx上传文件全部缓存解决方案 - 硬件设备 - 服务器之家...

    nginx上传文件速度慢 Nginx上传文件全部缓存解决方案 发布时间:2017-03-09 来源:服务器之家 下面通过文字说明给大家详解Nginx上传文件全部缓存解决方案. 因为应用服务器(Jett ...

  7. 爬虫实战学习笔记_6 网络请求request模块:基本请求方式+设置请求头+获取cookies+模拟登陆+会话请求+验证请求+上传文件+超时异常

    1 requests requests是Python中实现HTTP请求的一种方式,requests是第三方模块,该模块在实现HTTP请求时要比urlib.urllib3模块简化很多,操作更加人性化. ...

  8. nginx 上传文件漏洞_浅谈文件上传漏洞(其他方式绕过总结)

    前言 上一篇文章简单的介绍了绕过客户端检测,现在总结一下其他方式绕过. 正文 1.1 服务端MIME类型检测绕过 检测原理:用户上传文件时,服务器会获取这个文件的MIME值,与事先设置好的进行比对,如 ...

  9. nginx 上传文件漏洞_文件上传漏洞小结

    1 概念 上传文件时,服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的脚本文件,从而控制整个网站,甚至是服务器. 2 危害 • 网站被控制,对文件增删改查,执行命令,链接数据库 ...

最新文章

  1. kafka java_Kafka 使用Java实现数据的生产和消费demo
  2. python map函数的作用_Python的map函数
  3. 接口可以继承抽象类吗_Python接口类的多继承以及抽象类的单继承
  4. Python 中@符号解释
  5. Python面向对象,站在更高的角度来思考
  6. 数据结构 多路查找树 ---------B树和B+树的简单介绍
  7. Redis学习---(10)Redis 集合(Set)
  8. 图卷积神经网络GCN ---如何在交通预测中考虑网络拓扑结构
  9. 默纳克系统服务器怎么查故障,默纳克查历史故障
  10. almost unreal歌词翻译_Almost Lover歌词
  11. 电子厂里撂了挑子,我默默自学起了Android|2021年中总结
  12. 精选——Hive十道面试题(上)
  13. 学计算机用商用本,开学装机,笔记本电脑市场解析及购机推荐
  14. Luminati是做什么的,住宅代理表现如何?
  15. 《勋伯格和声学》读书笔记(一):大调三和弦的排列与结构
  16. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 B 合约数 (dfs+预处理)(dsu on tree)
  17. 黑龙江农垦科技职业学院喜迎寒假多校联赛2(快乐ak场)蒟弱部分题解
  18. 虹科分享 | 终端安全防护 | 网络安全术语列表(终篇)
  19. 12.15 Daily Scrum
  20. python中if in是什么意思_在if语句中“ in”的使用和含义?

热门文章

  1. Python切分文本(将文本文档切分为词列表)
  2. Halcon学习笔记:读取多张图片
  3. Python文件拷贝函数
  4. leetcode BFS(python+c++)
  5. TFRecords文件的存储与读取
  6. 和为S的连续正数序列(双指针详解)
  7. java+long是什么_Java中long的模运算符是什么? - java
  8. 12c oracle 激活_Windows运维之Windows server 2016 安装及ORACLE 12C 安装
  9. map集合的常用方法和遍历
  10. java连接mysql执行ddl_dljd_(007_009)_jdbc执行DQL/DML/DDL语句