Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Kubernetes上使用Nginx SSL代理运行Meteor应用程序_Ssl_Meteor_Nginx_Proxy_Kubernetes - Fatal编程技术网

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

在Kubernetes上使用Nginx SSL代理运行Meteor应用程序,ssl,meteor,nginx,proxy,kubernetes,Ssl,Meteor,Nginx,Proxy,Kubernetes,我在谷歌云上使用Kubernetes部署了一个Meteor应用程序,配置了Nginx作为SSL终端。一切正常 然而,如果两个不同的客户端连接到两个不同的SSL容器,更新在各自的应用程序上最多10秒钟不会显示,这使得Websockets似乎不起作用,但轮询正在生效。我已经确认所有客户端都与WebSocket连接,但由于更新不会立即传播,可能Nginx没有配置为与Meteor应用程序正确对话 以下是我的SSL/Nginx服务: apiVersion:v1 种类:服务 元数据: 名称:前端ssl 标签

我在谷歌云上使用Kubernetes部署了一个Meteor应用程序,配置了Nginx作为SSL终端。一切正常

然而,如果两个不同的客户端连接到两个不同的SSL容器,更新在各自的应用程序上最多10秒钟不会显示,这使得Websockets似乎不起作用,但轮询正在生效。我已经确认所有客户端都与WebSocket连接,但由于更新不会立即传播,可能Nginx没有配置为与Meteor应用程序正确对话

以下是我的SSL/Nginx服务:

apiVersion:v1 种类:服务 元数据: 名称:前端ssl 标签: 名称:前端ssl 规格: 端口: -名称:http 港口:80 目标港:80 -名称:https 港口:443 目标港:443 选择器: 名称:前端ssl 类型:负载平衡器 负载均衡器IP:123.456.123.456 会话相关性:ClientIP

这是流星服务:

apiVersion:v1 种类:服务 元数据: 名称:前端 标签: 名称:前端 规格: 端口: -港口:3000 目标港:3000 选择器: 名称:流量前端 类型:负载平衡器 负载均衡器IP:123.456.123.456 会话相关性:ClientIP


对于SSL终止,我在NginX配置中使用Kubernetes建议的SSL设置以及WebSocket添加

,您是否确保每次都使用
ip_散列
标志将WebSocket定向到同一服务器?此外,您还需要确保转发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://;
    }
}

运行应用程序的最简单方法是使用基于Nginx的入口控制器,而不是Nginx服务

在我看来,部署入口控制器的最简单方法是使用helm:

但如果您不想向堆栈中添加其他工具,可以使用官方安装指南:


具有web套接字支持的入口对象配置示例可在此处找到:

您将123.456.123.456指向两个服务(或者这是一个输入错误)?我不熟悉流星,但你的问题可能不是流星的问题。您应该至少有2个POD(最好由2个RCs管理)和2个服务,一个用于nginx,一个用于您的应用程序。只有nginx服务需要Type=Loadbalacer。要缩小未知范围,可以使用节点选择器()强制POD降落在同一节点上。您还可以使用类似于
proxy\u pass的方法将nginx实例直接指向服务http://svcName.svcNamespace.svc.cluster.local:svcPort
在您的配置中(假设您的群集DNS正在工作,并且可以使用例如nslookup解析您的服务名称)。让我知道这是怎么回事。Nginx和Meteor都有单独的rcs和吊舱。我认为只有nginx需要Type=LoadBalancer,但是我认为在meteor端使用它不会影响任何事情。他们确实生活在同一个IP上,但这只是使两者都公开,每个都在自己的端口上。作为对你第二条评论的回应,我不希望吊舱降落在相同的实例上,因为这有点违背了运行kubernetes的目的。我想在100个不同实例的100个吊舱上运行我的meteor应用程序。事实上,我正在使用
proxy\u-passhttp://target_service:port
为了将请求从nginx路由到meteor.FYI,我确实从meteor服务中删除了type=LoadBalancer。但是,事情都是一样的。Arg no。。。一艘客轮,pfft。让我来测试一下。谢谢你!不行。添加
ip\u hash
行似乎没有效果。升级头呢?看来我已经设置好了。这是我的nginx配置。对不起,我不确定。我会尝试这样评论:ssl_session_门票关闭;ssl_钉合;ssl_装订_验证打开;分解器8.8.8.8.8.4.4有效=300s;分解器超时5s;哪些人在外面打电话,可能会让事情变慢?这可能是正确的。出于一些原因,我离开了Kubernetes,但这里的Nginx肯定发生了一些事情。