Ahh, I've found the answer in the proxy_pass documentation. http://wiki.nginx.org/HttpProxyModule#proxy_pass -- "A special case is using variables in the proxy_pass statement: The requested URL is not used and you are fully responsible to construct the target URL yourself."
Surprising, but now I know for next time :) Cheers Ben On 24 March 2013 14:56, Ben Hoskings <[email protected]> wrote: > Hi all, I've found a strange behaviour with proxy_pass. I've reduced a > simple vhost that reproduces it: > > server { > listen 127.0.0.1:8000; > location / { > proxy_pass $scheme://127.0.0.1:9000/; > } > } > > A listener on localhost:9000 receives a request, but for '/' instead of > the correct path. For example, curling this URI... > > curl -I -X GET http://localhost:8000/test-path > > ... causes a "GET /" on a local listener: > > nc -l 127.0.0.1 9000 > GET / HTTP/1.0 > > If I replace $scheme with 'http' (i.e. "proxy_pass http://127.0.0.1:9000/"), > then it works correctly: > > curl -I -X GET http://localhost:8000/test-path > > > nc -l 127.0.0.1 9000 > GET /test-path HTTP/1.0 > > I ran these tests on nginx-1.2.7 / OS X 10.8.3; the behaviour is the same > on nginx-1.2.4 / Ubuntu 12.04 (which is where I discovered it). > > Am I using $scheme incorrectly here, or could this be a bug? > > Cheers, > Ben Hoskings > -- Cheers Ben
_______________________________________________ nginx mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx
