增加代理发送超时和代理读取超时入口nginx
我正在GKE上运行部署 使用增加代理发送超时和代理读取超时入口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
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;
如何将此连接更改为关闭而不是保持活动状态