增加代理发送超时和代理读取超时入口nginx

增加代理发送超时和代理读取超时入口nginx,nginx,kubernetes,google-kubernetes-engine,Nginx,Kubernetes,Google Kubernetes Engine,我正在GKE上运行部署 使用quay.io/kubernetes入口控制器/nginx入口控制器:0.12.0image作为nginx入口控制器 我正在尝试增加代理发送超时和代理读取超时 这是我的入口配置: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: nginx-ingress namespace: production annotations: kubernetes.io/ingress.clas

我正在GKE上运行部署

使用
quay.io/kubernetes入口控制器/nginx入口控制器:0.12.0
image作为nginx入口控制器

我正在尝试增加代理发送超时和代理读取超时

这是我的入口配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: production
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "360s"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "360s"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "360s"
    nginx.ingress.kubernetes.io/proxy-body-size: 100m
    nginx.ingress.kubernetes.io/client-body-buffer-size: 100m
spec:
  rules:
  - host: app.my.com
    http:
      paths:
      - backend:
          serviceName: front-app
          servicePort: 80
  - host: api.my.com
    http:
      paths:
      - backend:
          serviceName: backend-app
          servicePort: 80
  - host: api.old.com
    http:
      paths:
      - backend:
          serviceName: backend-app
          servicePort: 80
  tls:
  - hosts:
    - app.my.com
    - api.my.com
    secretName: tls-secret-my-com
  - hosts:
    - api.old.com
    secretName: tls-secret-old-com
但这不会更改代理发送超时和代理读取超时

超过60秒(默认nginx超时)的请求将被关闭

我看到这个日志:

[error] 20967#20967: * upstream prematurely closed connection while reading response header from upstream, client: 123.456.789.12, server: api.my.com, request: "GET /v1/example HTTP/2.0", upstream: "http://11.22.3.44:4000/v3/example", host: "api.my.com", referrer: "https://app.my.com/"
当我进入nginx吊舱时:

> kubectl exec -it nginx-ingress-controller-xxxx-yyyy -n ingress-nginx -- bash
> cat /etc/nginx/nginx.conf
输出:

server {
    server_name _ ;

    listen 80 default_server  backlog=511;
    location / {
        # Custom headers to proxied server

        proxy_connect_timeout                   5s;
        proxy_send_timeout                      60s;
        proxy_read_timeout                      60s;
proxy\u send\u timeout
proxy\u read\u timeout
设置为
60s
而不是
360s
,正如我在入口上配置的那样

因此,我尝试在
nginx
conf上手动更改超时,然后在客户端上没有获得超时,但每次重新启动nginx时,值都返回到默认值
60s

如何当前配置入口上的超时

基于:

尝试将注释中的值更改为“360”。该值必须是一个数字

根据,您应该使用被视为字符串的数值

例如:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: webapp-domain-local
  annotations:
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "10"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "1"
spec:
  rules:
  - host: webapp.domain.local
    http:
      paths:
      - backend:
          serviceName: webapplication
          servicePort: 8080

使用注释,如下所示

     kubernetes.io/ingress.class: nginx
     kubernetes.io/ingress.allow-http: "false"
     nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
     nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
它应该反映在nginx conf文件中,如下所示


                        proxy_send_timeout                      3600s;
                        proxy_read_timeout                      3600s;

如何将此连接更改为关闭而不是保持活动状态