Dmytrii Nagirniak Dmytrii Nagirniak - 1 month ago 34
Ruby Question

How to preserve request url with nginx proxy_pass

I was trying to use Thin app server and had one issue.

When nginx proxies the request to Thin (or Unicorn) using

proxy_pass http://my_app_upstream;
the application receives the modified URL sent by nginx (
http://my_app_upstream
).

What I want is to pass the original URL and the original request from client with no modification as the app relies heavily on it.

The nginx' doc says:


If it is necessary to transmit URI in
the unprocessed form then directive
proxy_pass should be used without URI
part.


But I don't understand how exactly to configure that as the related sample is actually using URI:

location /some/path/ {
proxy_pass http://127.0.0.1;
}


So could you please help me figuring out how to preserve the original request URL from the client?

Answer

I think the proxy_set_header directive could help:

location / {
    proxy_pass http://my_app_upstream;
    proxy_set_header Host $host;
    # ...
}
Comments