【问题标题】:How to update ngnix configuration of ngnix ingress controller如何更新 nginx 入口控制器的 nginx 配置
【发布时间】:2018-08-24 11:17:03
【问题描述】:

我已经使用 helm chart 在 K8 cluster 上安装了 ngnix 入口控制器。

helm install --name nginx-ingress stable/nginx-ingress --namespace kube-system

我想更新 ngnix 入口控制器的 ngnix.conf 文件中的以下值:

 1. proxy-connect-timeout
 2. proxy-read-timeout
 3. location 

{
    add_header "Cache-Control" "max-age=0, no-cache, no-store, must-revalidate";
    add_header "Pragma" "no-cache";
    add_header "Expires" "-1";
}

我在ingress.yaml下面用过:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-iningress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "300s"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "300s"
    nginx.ingress.kubernetes.io/client-max-body-size: "0"
    nginx.ingress.kubernetes.io/server-snippet: |
                  location / {
                     add_header "Cache-Control" "max-age=0, no-cache, no-store, must-revalidate";
                     add_header "Pragma" "no-cache";
                     add_header "Expires" "-1";
                  }
spec:
  rules:
  - host: {{ .Values.ingress.hosts }}
    http:
      paths:
      - path: /ui
        backend:
          serviceName: sift-ui-service
          servicePort: {{ .Values.service.sift_ui.port }}

然后当我检查 ngnix.conf 使用

kubectl exec -it nginx-ingress-controller-b4477bdf7-gwt8v -n kube-system -- cat /etc/nginx/nginx.conf

proxy-connect-timeoutproxy-read-timeout 不会更新。它显示默认值,并且 server-sn-p 也没有被添加。

谁能告诉我如何update/add 配置ngnix 入口控制器?

【问题讨论】:

  • 注释可能不正确。查看github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/… 上的文档以获取正确的文档并将它们与定义的进行比较。此外,您可能使用了不正确的值,例如 "300s" insted of "300"。另外,你能提供ingress-controller的日志吗,应该有关于应用注释的错误或消息,命令是kubectl logs -n kube-system <ingress-controller-podname>

标签: kubernetes-ingress nginx-ingress


【解决方案1】:

我得到了上述问题的解决方案。 我用过

 nginx.ingress.kubernetes.io/proxy-connect-timeout: "300s" 

而不是

 nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"

 nginx.ingress.kubernetes.io/server-snippet 

而不是

 nginx.ingress.kubernetes.io/configuration-snippet

解决方案:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-iningress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/client-max-body-size: "0"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      add_header "Cache-Control" "max-age=0, no-cache, no-store, must-revalidate";
      add_header "Pragma" "no-cache";
      add_header "Expires" "-1";
spec:
  rules:
  - host: {{ .Values.ingress.hosts }}
    http:
      paths:
      - path: /ui
        backend:
          serviceName: sift-ui-service
          servicePort: {{ .Values.service.sift_ui.port }} 

【讨论】:

    【解决方案2】:

    你还有问题吗?

    实际上,我在 proxy-body-size 配置上遇到了同样的问题。该值不会对 nginx-ingress-controller pod 生效。

    我做了一些研究,找到了以下解决方案:

    (before) nginx.ingress.kubernetes.io/proxy-body-size: "0"
    (after) ingress.kubernetes.io/proxy-body-size: "0"
    

    我所做的是在注释设置中省略了“nginx”。

    我想你可以尝试如下配置注解:

    metadata:
      name: test-iningress
      annotations:
        ingress.kubernetes.io/rewrite-target: /
        ingress.kubernetes.io/proxy-connect-timeout: "300s"
        ingress.kubernetes.io/proxy-read-timeout: "300s"
        ingress.kubernetes.io/client-max-body-size: "0"
    

    希望它适用于您的环境!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2020-01-08
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 2020-08-13
      相关资源
      最近更新 更多