missing $uri when performing proxy_pass ??
Thomas Mangin
thomas.mangin at exa-networks.co.uk
Fri Feb 6 04:06:37 MSK 2009
Hello,
I think I hit a bug (and found a workaround) however as I may be
mistaken, I would appreciate if someone could review this and let me
know if the behaviour observed is normal or not.
I am going to use NGINX to perform per cookie load distribution. The
first request hit a backend using an upstream list, which then set a
cookie used to re-route the following requests to the same machine.
When testing the configuration below, the server correctly set the
cookie. From that point on all the request for subsequent pages are
passing via the name stored in the cookie which cause NGINX to create
invalid proxy_pass requests !
Here is the initial request :
GET /roundcube/ HTTP/1.1.
Host: webmail.domain.com.
[....]
which cause NGNIX to generate the following request :
GET HTTP/1.0.
Host: webmail.domain.com.
[...]
For some reason the URI is not set between the GET and the HTTP/1.0 !
(tested with 0.6.35)
Here is the configuration causing this behaviour
http {
upstream roundcube {
server 127.0.0.0.1;
.......
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
server {
listen 1.2.3.4:80;
server_name webmail.domain.com;
# Attempt to cluster roundcube, each webserver running it set a
cookie once auth.
# This allow to get following connection to the same machine
location / {
set $backend "";
if ($http_cookie ~* "cluster_id=([^;]+)(?:;|$)" )
{
set $backend $1;
}
if ($backend ~* "backend[0-9]+.domain.com")
{
proxy_pass http://$backend;
break;
}
proxy_pass http://roundcube;
break;
}
}
}
I got around the problem by changing the proxy_pass for http://
$backend/$uri but it was my impression that this should not be needed
as without trailing / the uri would be appended.
Not to help, I have been unable to access the english wiki for the
last two days.
Regards,
Thomas Mangin
More information about the nginx
mailing list