cookie based redirect mit nginx

Vor einiger Zeit habe ich einen Tip beschrieben, wie man einen cookie-based redirect mit dem LightTPD konfigurieren kann. Das Problem an der Sache ist für mich, dass das für diesen Zweck verwendete Modul mod_proxy von LightTPD in dem von mir eingesetzen Entwicklungszweig (1.4.x) nicht SSL kompatibel ist und dementsprechend HTTPS Verbindungen fehlschlagen.

Seit einiger Zeit schon habe ich den Web- und (Reverse-) Proxy-Server nginx im Auge. Auch mit diesem Server ist es möglich einen Redirect einzurichten, so wie ich ihn brauche. Und: nginx unterstützt an dieser Stelle SSL!

server {
listen 80;
server_name *.devcenter.int;

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

location / {
if ($http_cookie ~ “(; )?devredirect=harald”) {
proxy_pass http://10.0.0.20;
break;
}
if ($http_cookie ~ “(; )?devredirect=markus”) {
proxy_pass http://10.0.0.22;
break;
}


}
}

server {
listen 443;
server_name ….devcenter.int;

ssl on;
ssl_certificate /etc/nginx/….crt;
ssl_certificate_key /etc/nginx/….key;

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

location / {
if ($http_cookie ~ “(; )?devredirect=harald”) {
proxy_pass https://10.0.0.20;
break;
}
if ($http_cookie ~ “(; )?devredirect=markus”) {
proxy_pass https://10.0.0.22;
break;
}


}
}