How to edit url and pass forward to wsgi?
Francis Daly
francis at daoine.org
Thu Sep 3 07:44:11 UTC 2015
On Thu, Sep 03, 2015 at 12:44:09AM -0400, Thomas Nyberg wrote:
Hi there,
> location ~ /staging/dog/.*/info/cat {
"~" means "regex match".
You haven't anchored the regex, so a request for /staging/dog/x/info/cat
will match this, but so will a request for /a/staging/dog/x/info/cat/b
> directive in place, but put the following one before it, then get
> "502 Bad Gateway":
>
> location ~ /dog/.*/info/cat {
This also is matched by a request for /staging/dog/x/info/cat.
For regex locations, first match wins. So this location is chosen to
process this request.
> Nothing else was changed. The route is different, the port is
> different. Why would this affect the other one? Is it that I'm
> somehow "breaking" out and _then_ matching the other one?
No. Your request matches the first regex location, so uses the first
regex location.
Possibly you want
location ~ ^/dog/.*/info/cat
or
location ~ ^/dog/.*/info/cat$
or maybe just
location ^~ /dog/
depending on what the full plan is.
> I.e. I want to _not_ leave the location box once I've matched.
> Is this possible?
Yes, it's what you are already doing.
You're just not in the location block you think you are in.
http://nginx.org/r/location
f
--
Francis Daly francis at daoine.org
More information about the nginx
mailing list