2012-11-19 4 views
1

Je suis prêt à utiliser Nginx comme proxy inverse et loadbalancer.Nginx - Reverse Proxy - cookie

J'ai 2 serveurs avec 2 versions différentes de mon application. C'EST À DIRE. Si l'utilisateur a V1 sur son ordinateur, il doit aller sur le serveur 1. S'il a V2, le serveur 2.

J'ai utilisé des paramètres $ _GET pour rediriger l'utilisateur vers le serveur correspondant avec ce code (sinon V1, alors c'est V2):

if ($args ~* V=1) { 
    proxy_pass http://server1; 
    break; 
} 
proxy_pass http://server2; 

Cela fonctionne bien. Mais j'ai eu un problème avec certaines requêtes AMF (Flash nécessaire): je ne peux pas définir un paramètre $ _GET ou un en-tête. J'ai donc essayé d'utiliser des cookies, mais rien ne semble fonctionner.

if ($http_cookie ~ 'V=1') { 
    proxy_pass http://server1; 
    break; 
} 
if ($cookie_VER ~ 'V=1'){ 
    proxy_pass http://server1; 
    break; 
} 

Je ne peux pas utiliser le HttpMapModule parce que je dois aussi la redirection _GET $ paramètres ...

Est-il possible de faire ce que je veux, ou je vais dans le mauvais sens?

Répondre

1

En fait, votre deuxième exemple devrait fonctionner si je vous comprends bien, mais il y a une petite erreur là-bas. Si vous pouvez définir un cookie appelé V1 pour l'application 1, et définir un autre cookie V2 pour l'application 2, vous pouvez utiliser ce code comme suit:

if ($http_cookie ~* 'V1') { 
    proxy_pass http://server1; 
    break; 
} 
if ($http_cookie ~* 'V2'){ 
    proxy_pass http://server2; 
    break; 
} 

S'il vous plaît vérifier le fond de mon article sur la configuration virtual.conf directives pour reverse proxy setup.