在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://;
    }
}

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。