当通过HTTP路由到后端时,Nginx Ingress如何处理HTTPS(wss:…)上的传入WebSocket连接?(ws:…)?
我正在使用Nginx Ingress提供kubernetes服务: Nginx是否转换来自wss的请求:。。。到ws:? 或 Nginx是否要求后端也启用HTTPS?使其成为一个更简单的wss:。。。致wss:。。。 如果是这种情况,那么后端的自签名证书可以吗?我将如何配置代理以成功连接到该后端 我目前有通过HTTP到后端(ws:…到ws:…)工作的Web套接字,我真的不知道如何进入下一个级别并通过HTTPS工作!我想这是这里的主要问题当通过HTTP路由到后端时,Nginx Ingress如何处理HTTPS(wss:…)上的传入WebSocket连接?(ws:…)?,nginx,websocket,kubernetes-ingress,nginx-ingress,Nginx,Websocket,Kubernetes Ingress,Nginx Ingress,我正在使用Nginx Ingress提供kubernetes服务: Nginx是否转换来自wss的请求:。。。到ws:? 或 Nginx是否要求后端也启用HTTPS?使其成为一个更简单的wss:。。。致wss:。。。 如果是这种情况,那么后端的自签名证书可以吗?我将如何配置代理以成功连接到该后端 我目前有通过HTTP到后端(ws:…到ws:…)工作的Web套接字,我真的不知道如何进入下一个级别并通过HTTPS工作!我想这是这里的主要问题 apiVersion: k8s.nginx.org/v1
apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
name: xxxx-virtual-server
namespace: {{ .Values.tenantName }}
labels:
{{- include "xxxx.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
host: {{ .Values.tenantName }}.x.cloud
tls:
secret: aks-ingress-tls
upstreams:
- name: aaa-upstream
service: aaa-service
port: 5000
- name: bbb-upstream-socket
service: bbb-service-socket
port: 80
routes:
- path: /
matches:
- conditions:
- header: Upgrade
value: websocket
action:
pass: bbb-upstream-socket
action:
pass: aaa-upstream
我终于让它工作了,所以对于其他有同样想法的人来说,这就是我的发现 我正在使用Nginx Ingress提供kubernetes服务: Nginx是否转换来自wss的请求:。。。到ws:。。。是的,它可以:-) Nginx是否要求后端也启用HTTPS:不,不需要 基本上,我们将套接字设置为侦听url“/ws/” 使用类似以下URL的URL从浏览器连接: wss://test.cytrack.cloud/ws/ 然后使用Nginx Ingress虚拟服务器自定义资源添加:
apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
name: abc-virtual-server
namespace: abcd
spec:
host: abcde
tls:
secret: aks-ingress-tls
upstreams:
- name: abc-upstream-socket
service: abc-service-socket
port: 80
read-timeout: 300s
send-timeout: 300s
- path: /ws/
action:
pass: abc-upstream-socket
我终于让它工作了,所以对于其他有同样想法的人来说,这就是我的发现 我正在使用Nginx Ingress提供kubernetes服务: Nginx是否转换来自wss的请求:。。。到ws:。。。是的,它可以:-) Nginx是否要求后端也启用HTTPS:不,不需要 基本上,我们将套接字设置为侦听url“/ws/” 使用类似以下URL的URL从浏览器连接: wss://test.cytrack.cloud/ws/ 然后使用Nginx Ingress虚拟服务器自定义资源添加:
apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
name: abc-virtual-server
namespace: abcd
spec:
host: abcde
tls:
secret: aks-ingress-tls
upstreams:
- name: abc-upstream-socket
service: abc-service-socket
port: 80
read-timeout: 300s
send-timeout: 300s
- path: /ws/
action:
pass: abc-upstream-socket
你能分享你当前的配置/yaml吗?尝试此操作时是否看到任何错误?在http上正常工作。。。套接字链接包含ws:。。。只有当我转到https并将链接更改为wss:。。。谈判失败了。所以我假设yaml是好的,。。。但是我确实收到一个“HTTP错误400。请求主机名无效。”错误,您可以共享当前的配置/yaml吗?尝试此操作时是否看到任何错误?在http上正常工作。。。套接字链接包含ws:。。。只有当我转到https并将链接更改为wss:。。。谈判失败了。所以我假设yaml是好的,。。。但我确实收到一个“HTTP错误400。请求主机名无效。”错误,