javax.websocket.DeploymentException: The HTTP response from the server [404] did not permit the HTTP upgrade to WebSocket

2/10/2020

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.

-- Dolphin
kubernetes

0 Answers