Rewrite mirrored request

Roman Arutyunyan arut at nginx.com
Tue May 29 12:28:52 UTC 2018


Hi Jurian,

On Tue, May 29, 2018 at 11:18:26AM +0200, Jurian Broertjes wrote:
> Hi Roman,
> 
> Thank you for your answer, but it's not clear to me how to do this.
> 
> The request I'd like to mirror is something like
> http://solrproxy.example.org/prd-solr/abc/select?xyz, so I would expect the
> "prd-solr" part to be rewritten for the mirror requests. The log says:
> 
> "GET /prd-solr/abc/select?xyz HTTP/1.0
> Host: cloud
> 
> Do you have a suggestion on how to get it to "/solr/abc/select?xyz

If the only reason why you need this rewrite is proxy_pass, then just pass it
a modified uri.

map $request_uri $new_uri {
    ~^/prd-solr/(.*)$  /solr/$1;
}

location /mirror {
    internal;
    proxy_pass http://cloud$new_uri;
}

> Best regards,
> Jurian
> 
> 
> On 28-05-18 17:50, Roman Arutyunyan wrote:
> >Hello Jurian,
> >
> >On Mon, May 28, 2018 at 03:38:45PM +0200, Jurian Broertjes wrote:
> >>Hi All,
> >>
> >>I'm trying to do a simple rewrite of a mirrored request, see the snippet
> >>below. I'm under the impression that mirrored requests somehow cannot be
> >>rewritten. Is this the case or am I doing something wrong here? Is there
> >>some other way to get the job done?
> >>
> >>   location / {
> >>     mirror /mirror;
> >>....
> >>     proxy_pass http://slave;
> >>   }
> >>
> >>   location /mirror {
> >>     internal;
> >>
> >>     rewrite prd-solr solr;
> >>     proxy_pass http://cloud;
> >>   }
> >Mirror requests can be rewritten.  But keep in mind that a mirror subrequest
> >has a different URI than the original request.  In your case it's /mirror.
> >So unless 'prd-solr' matches it, rewrite will not happen.
> >
> >Normally $request_uri is used to access the original request URI in a mirror
> >subrequest.
> >
> 
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx

-- 
Roman Arutyunyan


More information about the nginx mailing list