I am transfer websocket into kubernetes cluster pods using Traefik, this is my nginx transfer configure:
server{
listen 443 ssl;
ssl_certificate /etc/nginx/conf.d/cert/example.com/fullchain1.pem;
ssl_certificate_key /etc/nginx/conf.d/cert/example.com/privkey1.pem;
server_name k8s-ws.example.com;
location / {
client_max_body_size 50m;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 36000s;
proxy_pass http://172.19.150.82;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
and this is my traefik v2.0 config:
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: fat-websocket-route
spec:
entryPoints:
- web
routes:
- match: Host(`k8s-ws.example.com`)
kind: Rule
services:
- name: ws-red-envelope-service
port: 12001
12001 is my websocket listening port in kubernetes(v1.15.2) pods. I am already read this problem. when I connect to websocket service,it shows: javax.websocket.DeploymentException: The HTTP response from the server [404] did not permit the HTTP upgrade to WebSocket
. What should I do to make it works,I read traefik support websocket.