Rewriting https to http
Igor Sysoev
is at rambler-co.ru
Fri Jan 12 16:35:32 MSK 2007
On Fri, 12 Jan 2007, Jonathan Dance wrote:
>> "abcdefgh" < "b"
>
> I think you mean "alphabetical," or more specifically "in language
> order" which is probably what you meant by "lexical."
Here is quote from FreeBSD strcmp(3) man:
DESCRIPTION
The strcmp() and strncmp() functions lexicographically compare the null-
terminated strings s1 and s2.
> I can see how an alphabetical list might work, but not completely.
> Either way, I believe the end result is the same, which is the most
> important thing for the docs -- the longest matching string will be
> the one which is used -- but your way is more efficient.
>
> I think what you're doing is searching the alphabetical list for where
> you would find the request URI (even though the request URI is not
> necessarily in the list). But, then you might have to backtrack up the
> list until you find a matching path. For example, if the locations are
> as such:
>
> /
> /a
> /z
>
> And the request is /n, then the initial search would return 1 -- e.g.,
> in order to insert /n into the list, it would go after /a.
>
> /
> /a <==
> /z
>
> However, /a doesn't match /n so you would have to go back up the list
> until you find /, which would match.
>
> Maybe you found a way around this problem though. :)
I was wrong in my correction:
nginx finds the longest match to conventional string.
These strings are sorted internally in lexical order,
- so the search is terminstaed just when URI became
- lexically more than a string.
+ so the search is terminated just while URI is lexicographically
+ equal or more than string.
So:
1) "/n" is tested again "/", it's match, nginx stores the "/" configuration.
The search continues, because "/n" >= "/".
2) then "/n" is tested again "/a", it does not match.
The search continues, because "/n" >= "/a".
3) then "/n" is tested again "/z", it does not match.
The search is stopped because "/n" < "/z".
The last stored configuration (i.e. "/" is used).
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list