我们正在使用独角兽和websocket运行rails应用程序。 我们使用AWS ELB作为入口 SSL终止于ELB并将流量转发给应用程序。
Nginx ingress将流量路由到端口8080上运行unicorn / puma的网络应用程序。
应用程序可以运行,但我们的websocket以200而不是101响应。我们启用了CORS并在入口中使用了必需的注释。
这是用于入口控制器服务的注释
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*'
service.beta.kubernetes.io/aws-load-balancer-ssl-cert::arn:aws:iam::xxx:server-certificate/staging
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
当我们使用aws loadbalancer协议作为tcp并将负载均衡器端口用作443时,它在无限重定向循环上失败。
以下是入口中使用的注释:
nginx.ingress.kubernetes.io/service-upstream: true
nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS"
nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
ingress.kubernetes.io/force-ssl-redirect: "true"
我们之前使用的没有入口的示例nginx配置是here
如何让websockets与AWS ELB一起使用nginx入口控制器?
答案 0 :(得分:0)
没有CORS可以尝试吗?
握手的一部分是客户端必须至少发送以下标题:
--runInBand