Proxying/redirecting after request has been rewritten

Hi everyone.

I’m trying to get Nginx to run some Regex’s on requests and send them to
another server block, returning the response headers from the second
server block. At the moment I get a 302 response status, how do I get
the headers from the second server block?

So as an example, I would like a request like:
http://nginxrouting.local/some/stuff/that/needs/to/be/removed/itemid=1234/more/stuff/topicid=1234
to be sent to
http://nginxrouting_destination.local/itemid=1234topicid=1234 returning
the headers from the new location

The server blocks look like this:

server {
server_name nginxrouting.local;
root /var/nginxrouting/public;

location / {

if ($request_uri ~* ".*(itemid=[0-9]*){1}.*") {
  set $itemid $1;
}
if ($request_uri ~* ".*(topicid=[0-9]*){1}.*") {
  set $topicid $1;
}
if ($request_uri ~* ".*(&type=RESOURCES){1}.*") {
  set $resources $1;
}

rewrite ^

http://nginxrouting_destination.local/$itemid$topicid$resources?
redirect;
add_header itemid $itemid;

}

}

server {
server_name nginxrouting_destination.local;
root var/govuk/nginxrouting/public_destination;
location / {
add_header working yes;
return 200;
}
}

Posted at Nginx Forum:

Hello!

On Wed, Aug 08, 2012 at 11:04:25AM -0400, i0n wrote:

http://nginxrouting_destination.local/itemid=1234topicid=1234 returning
the headers from the new location

Use proxy_pass. See Module ngx_http_proxy_module for details.

Maxm Dounin