每浏览器用户会话的nginx动态路由

每浏览器用户会话的nginx动态路由,nginx,cookies,nginx-reverse-proxy,Nginx,Cookies,Nginx Reverse Proxy,nginx背后的多个web应用程序。 我在nginx后面运行着不同的web应用程序 主网站应用程序-->此网站提供指向不同应用程序的重定向链接 不同应用-->App-1/App-2/App-3 Nginx-->路由到正确的应用程序 这是我在下面的图表,我用它来设置处理多个应用程序 App-1/App-2/App-3应用程序的访问方式 A.浏览器发送访问主网站的请求,主网站向其提供cookie值(设备类型=xx&IP=45)以延迟 *设备类型=App-1或App-2-->要连接的设备。 *IP=

nginx背后的多个web应用程序。 我在nginx后面运行着不同的web应用程序

  • 主网站应用程序-->此网站提供指向不同应用程序的重定向链接
  • 不同应用-->App-1/App-2/App-3
  • Nginx-->路由到正确的应用程序 这是我在下面的图表,我用它来设置处理多个应用程序

    App-1/App-2/App-3应用程序的访问方式

    A.浏览器发送访问主网站的请求,主网站向其提供cookie值(设备类型=xx&IP=45)以延迟

    *设备类型=App-1或App-2-->要连接的设备。 *IP=45,系统IP地址的最后八位字节。

    所以,只要看到设备类型和IP最后八位字节值,就可以重定向到正确的应用程序

    B.浏览器通过cookies和nginx向nginx发送请求,只要看到设备类型和IP最后八位字节值,就会重定向到正确的应用程序。 所有进一步的请求都会根据nginx的cookie值和规则发送到正确的应用程序

    如果每个应用程序只能从一个浏览器访问应用程序(App-1/App-2/App-3),则此操作非常有效

    问题:- 不能从同一浏览器访问任何两个应用程序。 i、 e.如果两个应用程序从同一个浏览器运行,即使不同的选项卡也会共享cookie

    现在,如果他们共享cookies,那么nginx将在大多数情况下重新定向到错误的应用程序

    我知道这不是最好的方法,但它还是像以前那样做的

    实现:-我希望根据每个用户的浏览器会话在nginx上进行动态路由。这样每次用户请求任何内容时,我都会将其路由到正确的应用程序

    我已经在nginx中进行了大量的研究,但nginx中没有任何内容,它保持浏览器会话,以便所有后续请求都发送到同一个应用服务器。 研究ceryx dynamic nginx

    • 如果你认为饼干不是个好主意&那么我愿意改变它

    为了将基于cookie的请求定向到特定服务器,您需要做的就是制作一个映射,如下所示:

    map $cookie_IP $app_upstream {
       default main_app;
       45      app1;
       46      app2;
       66      app3;
    }
    
    您需要为每个应用程序创建应用程序流

    upstream main_app {
       server 192.168.12.10;
    }
    upstream app1 {
        server 10.122.123.45;
    }
    upstream app2 {
        server 10.122.123.46;
    }
    upstream app3 {
        server 10.122.123.66;
    }
    
    在你的位置下,你可以

    location / {
        proxy_pass http://$app_upstream$uri;
    }
    

    如果您已经为每个上游定制了url,那么您需要做的是为每个上游创建服务器,并根据主机名值将其定向。

    为了将基于cookie的请求定向到特定服务器,您需要做的就是制作一个映射,如下所示:

    map $cookie_IP $app_upstream {
       default main_app;
       45      app1;
       46      app2;
       66      app3;
    }
    
    您需要为每个应用程序创建应用程序流

    upstream main_app {
       server 192.168.12.10;
    }
    upstream app1 {
        server 10.122.123.45;
    }
    upstream app2 {
        server 10.122.123.46;
    }
    upstream app3 {
        server 10.122.123.66;
    }
    
    在你的位置下,你可以

    location / {
        proxy_pass http://$app_upstream$uri;
    }
    


    如果您为每个上游都定制了url,那么,您需要做的是为每个上游创建服务器,并根据主机名值将其定向。

    您正在使用的URL地址是什么?如果主网站名称是www.help.com&但www.help.com将重定向到www.help.com/app1或www.help.com/app2或www.help.com/app3。。。,这是从www.help.comCookies重新定向的。这不需要Cookies,既然你正在解决问题,为什么不现在就处理掉它?好的,告诉我我是如何解决这个问题的。i、 e.如果您在同一浏览器(不同选项卡)上运行两个应用程序,即APP-1(45)和APP-2(66)。他们将共享Cookie IP信息,因为Cookie是每个主机的Cookie。因此,每次浏览器向我发送IP值时,它都会在选项卡之间互换使用,从而导致浏览器出现错误行为。因此,您事先没有IP和应用程序映射?您使用的URL地址是什么?如果主网站名称是www.help.com,但www.help.com将重定向到www.help.com/app1或www.help.com/app2或www.help.com/app3…,这是从www.help.comCookie被重定向的。这不需要Cookie,既然你正在解决这个问题,为什么你现在不处理它呢?好的,告诉我我如何解决这个问题。i、 e.如果您在同一浏览器(不同选项卡)上运行两个应用程序,即APP-1(45)和APP-2(66)。他们将共享Cookie IP信息,因为Cookie是每个主机的Cookie。所以每次浏览器向我发送IP值时,它都会在选项卡之间互换使用,导致浏览器出现错误行为。所以你事先没有IP和应用映射?请你仔细阅读我的问题。您提到的我已经在做了,即基于cookie将请求定向到特定服务器。但现在的问题是,若您在同一浏览器(不同的选项卡)上运行两个应用程序,即APP-1(45)和APP-2(66)。他们将共享Cookie IP信息,因为Cookie是每个主机的Cookie。因此,每次浏览器发送给我IP值时,它都会在选项卡之间互换使用,导致浏览器行为不当。对不起,我可能不太理解这个问题,那么,你最好不要依赖cookie,如果我是你,我会使用不同的主机名或一个主机名,并将用户应用程序附加到url参数中。对不起,我不明白您能否详细解释一下如果我正确理解您的问题,我相信您希望在相同的用户代理和cookie下同时在相同的DNS名称下为不同的应用程序提供服务器,对吗,如果是这样的话,如果我是你的话,我会让主应用程序通过附加额外的url参数(如/app1/随便什么)将客户端重定向到每个应用程序,如果这个请求从客户端获得服务器,我会删除位置范围上的这个透视参数。如果你愿意,我可以修改答案以反映我的想法。请你仔细阅读我的问题。您提到的我已经在做了,即基于cookie将请求定向到特定服务器。但现在的问题是,若您在同一浏览器(不同的选项卡)上运行两个应用程序,即APP-1(45)和APP-2(66)。他们将共享Cookie IP信息,因为Cookie是每个主机的Cookie。所以每次浏览器向我发送IP值时,它都会在选项卡和原因之间互换使用