在Kubernetes上使用Nginx SSL代理运行Meteor应用程序

我在Google Cloud上使用Kubernetes部署了一个Meteor应用程序,配置了Nginx作为SSL终止.一切正常.

但是,似乎如果两个不同的客户端连接到两个不同的SSL容器,则更新不会在相应的应用程序上显示最多10秒,这使得Websockets看起来不起作用,但轮询正在生效.我已确认所有客户端都与Websockets连接,但由于更新不会立即传播,因此Nginx可能未配置为与Meteor应用程序正确通信.

这是我的SSL / Nginx服务:

apiVersion:v1
种类:服务
元数据:
  名称:frontend-ssl
  标签:
    名称:frontend-ssl
规格:
  端口:
   – 名称:http
    港口:80
    targetPort:80
   – 名称:https
    港口:443
    targetPort:443
  选择:
    名称:frontend-ssl
  type:LoadBalancer
  loadBalancerIP:123.456.123.456
  sessionAffinity:ClientIP

这是Meteor服务:

apiVersion:v1
种类:服务
元数据:
  名称:前端
  标签:
    名称:前端
规格:
  端口:
   – 港口:3000
    targetPort:3000
  选择:
    name:flow-frontend
  type:LoadBalancer
  loadBalancerIP:123.456.123.456
  sessionAffinity:ClientIP

对于SSL终止,我使用Kubernetes建议的SSL设置与Websockets添加https://github.com/markoshust/nginx-ssl-proxy分叉

在你的NginX配置中,你是否确保每次都使用ip_hash标志将websockets定向到同一台服务器?您还需要确保转发websocket升级标头:

upstream meteorapp{
     ip_hash;
     server   hostname:port
}
server {
    # your server stuff here
    # 
    location / {
        proxy_pass                  http://meteorapp;
        proxy_set_header            Host $host;
        proxy_set_header            X-Real-IP $remote_addr;
        proxy_http_version          1.1;
        proxy_set_header            Upgrade $http_upgrade;
        proxy_set_header            Connection "upgrade";

        proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header            X-Forwarded-Proto http;
        proxy_redirect              http:// $scheme://;
    }
}
相关文章
相关标签/搜索