proxy_pass with variable removes uri
Valentin V. Bartenev
vbart at nginx.com
Wed Mar 5 11:23:08 UTC 2014
On Wednesday 05 March 2014 05:47:58 luckyswede wrote:
> Hi,
> I have a conf with two virtual hosts and a proxy-pass that is dependent on
> which host the request arrived to, like this:
>
> server {
> listen 80;
> server_name x.com y.com;
> resolver 8.8.8.8;
> root /var/www/html;
>
> location / {
> # whatever
> }
>
> location /api/ {
> proxy_pass http://api.$host/;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $remote_addr;
> proxy_set_header Host $host;
> }
> }
>
> Note the trailing "/" on proxy_pass which should forward the uri untouched,
> stripping out "/api". However, the uri is not forwarded at all, e.g. GET
> http://x.com/api/somehing is forwarded to api.x.com without the "/something"
> part.
> But, if I hard code the proxy_pass url, like this:
> proxy_pass http://api.x.com/;
> it works, the uri is properly forwarded.
>
> Doesn't proxy_pass have proper support for variables or have I done
> something wrong?
[..]
If variables are used in proxy_pass, then a full path should be specified.
For example: proxy_pass http://api.$host$uri;
wbr, Valentin V. Bartenev
More information about the nginx
mailing list