# Kevisual - kevisual.cn (支持 WebSocket) --- # WebSocket 支持中间件 - 完整头部配置 apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: websocket-headers namespace: default spec: headers: customRequestHeaders: X-Forwarded-Proto: "https" X-Real-IP: "" X-Forwarded-For: "" X-Forwarded-Host: "" --- # ServersTransport 配置 - 支持长连接 apiVersion: traefik.io/v1alpha1 kind: ServersTransport metadata: name: websocket-transport namespace: default spec: serverName: "" insecureSkipVerify: true maxIdleConnsPerHost: 100 forwardingTimeouts: dialTimeout: 30s responseHeaderTimeout: 30s idleConnTimeout: 90s --- apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: kevisual-https namespace: default spec: entryPoints: - websecure routes: - match: Host(`kevisual.cn`) kind: Rule services: - name: kevisual-external port: 3005 serversTransport: websocket-transport middlewares: - name: websocket-headers tls: certResolver: letsencrypt --- apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: www-kevisual-https namespace: default spec: entryPoints: - websecure routes: - match: Host(`www.kevisual.cn`) kind: Rule services: - name: kevisual-external port: 3005 serversTransport: websocket-transport middlewares: - name: websocket-headers tls: certResolver: letsencrypt --- # 通配符子域名支持 *.kevisual.cn (兜底规则) # apiVersion: traefik.io/v1alpha1 # kind: IngressRoute # metadata: # name: wildcard-kevisual-https # namespace: default # spec: # entryPoints: # - websecure # routes: # - match: HostRegexp(`^[a-zA-Z0-9-]+\.kevisual\.cn$`) # kind: Rule # services: # - name: kevisual-external # port: 3005 # serversTransport: websocket-transport # middlewares: # - name: websocket-headers # tls: # certResolver: letsencrypt