根据cookie将流量重定向到不同的EC2实例(Nginx AWS)

问题描述 投票:0回答:1

我目前面临将网站流量重定向到 AWS 上不同的独立 EC2 实例的问题。 这是我的情况 我有 2 个不同的 EC2 实例在其上运行 React App,我需要根据最初设置的 Cookie 重定向我的流量。

我读过一些文档,其中写到我需要在另一个 EC2 上创建一个中央服务器,并据此重定向流量。

这是我在网上找到的配置,需要在我的中央 EC2 服务器中的

/etc/nginx/nginx.conf
中设置:

http {    
map $cookie_mycookie $frontend{
    default   reactApp1;
    value1    reactApp2;
    value2    reactApp3;
    # Add more mappings as needed
}

upstream reactApp1{
    server IP_of_EC2_Instance1;
}

upstream reactApp2{
    server IP_of_EC2_Instance2;
}

upstream reactApp3{
    server IP_of_EC2_Instance3;
}
server {
    listen 80;
    server_name mydomain.com;
    location / {
        proxy_pass https://$frontend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
}

在AWS DNS记录上,我还将此中央服务器的IP地址设置为我的域作为A记录,因此当我们进入该域时,它需要检查cookie以重定向到具有相关应用程序(例如reactApp1或)的EC2 ReactApp2 或 ReactApp3 ... .

但是 cookie 也已设置,但我从 Nginx 收到

502 Bad Gateway
错误。

如何将我的流量重定向到不同的 EC2?

提前致谢

reactjs amazon-web-services nginx amazon-ec2 reverse-proxy
1个回答
0
投票

既然您使用的是 AW,为什么不使用 Application Load Balancer 而不是“中央服务器”呢?

ALB 将接收所有传入请求,并将请求路由到您的 EC2 实例(负载均衡器术语中的“目标”)。我想将(后续)请求发送到您需要“粘性”的同一目标。

如果我正确理解您的要求,您将需要基于应用程序的粘性

基于应用程序的粘性使您可以灵活地设置自己的客户目标粘性标准。当您启用基于应用程序的粘性时,负载均衡器将根据所选算法将第一个请求路由到目标组内的目标。目标预计会设置一个自定义应用程序 cookie,该应用程序 cookie 与负载均衡器上配置的 cookie 相匹配,以实现粘性。此自定义 cookie 可以包含应用程序所需的任何 cookie 属性。

请注意,使用负载均衡器意味着额外的成本(与中央服务器实例的数量级应相同),但比中央服务器实例更稳定且易于维护。

希望这有帮助。

额外提示:由于 React 应用程序是“静态”站点,因此将它们托管在 S3 存储桶上要便宜得多,您可能需要对此进行调查;请注意,在这种情况下,负载平衡和粘性不适用,但应该可以使用 CloudFront 和 Lambda@Edge 来选择不同的源(在这种情况下,源与目标类似)。

© www.soinside.com 2019 - 2024. All rights reserved.