gpt4 book ai didi

Nginx入口 Controller Websocket支持

转载 作者:行者123 更新时间:2023-12-04 15:06:21 27 4
gpt4 key购买 nike

最近,我一直在使用Kubernetes开发玩具应用程序。该应用程序的一部分是需要支持WebSocket的Web服务器。目前,我正在使用端口转发来访问Web服务器,并且一切正常。

我想切换到使用Ingress和IngressController来避免使用端口转发。

这是我的Ingress配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
spec:
rules:
- http:
paths:
- path: /app
backend:
serviceName: web-svc
servicePort: 3030
- path: /ws
backend:
serviceName: web-svc
servicePort: 3030

现在通过 $(minikube ip)/app访问应用程序可以正常工作,但是WebSocket请求全部失败,因为nginx返回200而不是101。

我尝试添加 nginx.org/websocket-services批注,但这似乎也不起作用。

有没有人遇到过类似的情况?

干杯

最佳答案

通过查看nginx ingress controller docsnginx docs,您可能需要像这样的内容作为Kubernetes Ingress上的注释:

nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
请注意,一旦添加了注释,您的所有 Ingress规则都将在nginx配置的 location块中包含该代码段。因此,如果您想忽略其他规则,则必须创建一个单独的Kubernetes Ingress
编辑:
根据 gistNginx ingress docs📄,似乎此批注解决了该问题:
nginx.ingress.kubernetes.io/proxy-read-timeout: 3600
nginx.ingress.kubernetes.io/proxy-send-timeout: 3600

关于Nginx入口 Controller Websocket支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52883653/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com