Rewrite URI and pass request to the upstream server

Maxim Dounin mdounin at mdounin.ru
Tue Mar 17 20:38:12 MSK 2009


Hello!

On Tue, Mar 17, 2009 at 12:09:29PM -0500, Ruben. D. wrote:

> Hi friends, I need rewrite and old URI and pass the request to the upstream
> server, here is my current config file:
> http://pastie.org/418871
> 
> If for example I have http://pe.domain.com/xx-xxx-689 I need redirect to
> http://cl.domain.com/xx-xxx-689 and let the upstream process the new
> request, with my current config I've obtained the rewrite of the URI but
> nginx return me a 404 error, therefore it is not transfering the request to
> the upstream server because the 404 error page are different between nginx
> and my application.

According to your config, [new] request to cl.domain.com/xx-xxx-689
will end up in "location ~* [a-zA-Z]+(\-)+689$", which has no proxy_pass
rules.  You should either duplicate proxy_pass rules within this location, or 
(better, faster, more scalable) separate pe.* and cl.* servers:

server {
    listen       80;
    server_name  pe.domain.com;

    location ~* [a-zA-Z]+(\-)+689$ {
        rewrite  ^  http://cl.domain.com$request_uri?;
    }

    ...
}

server {
    listen       80;
    server_name  www.domain.com domain.com cl.domain.com;

    ...
}

For identical config chunks within this servers you may want to 
use include.

Maxim Dounin





More information about the nginx mailing list