$memcached_key doesn't fetch unicode url

kirpit kirpit at gmail.com
Fri May 9 08:57:25 UTC 2014


A note to the history that is good to know.

Thanks Maxim, even though we choose not to use unicode urls to make things
less complicated.


On Fri, May 9, 2014 at 4:13 AM, Maxim Dounin <mdounin at mdounin.ru> wrote:

> Hello!
>
> On Sun, May 04, 2014 at 06:42:39PM +0300, kirpit wrote:
>
> > Hi,
> >
> > I'm doing some sort of downstream cache that I save every entire page
> into
> > memcached from the application with urls such as:
> >
> > www.example.com/file/path/?query=1
> >
> > then I'm fetching them from nginx if available with the config:
> >     location / {
> >         # try to fetch from memcached
> >         set                 $memcached_key "$host$request_uri";
> >         memcached_pass      localhost:11211;
> >         expires             10m;
> >         # not fetched from memcached, fallback
> >         error_page          404 405 502 = @fallback;
> >     }
> >
> >
> > This works perfectly fine for latin char urls. However, it fails to catch
> > unicode urls such as:
> >
> >
> www.example.com/flights/istc-lonc-11062014/lonc-istc-19062014/Cheap-return-tickets-from-%C4%B0stanbul-to-Londra-in-Haziran.html?class=economy&adult=1
> >
> > The unicode char "%C4%B0" appears same in the nginx logs, application
> cache
> > setting key (that is actually taken from raw REQUEST_URI what nginx
> gives).
> >
> > The example url content also exist in the memcached itself when if I try:
> > "get
> >
> www.example.com/flights/istc-lonc-11062014/lonc-istc-19062014/Cheap-return-tickets-from-%C4%B0stanbul-to-Londra-in-Haziran.html?class=economy&adult=1
> > "
> >
> > However, nginx cannot fetch anything from memcached, @fallbacks every
> time.
> >
> > I'm using version 1.6.0. Any help is much appreciated.
>
> Value of $memcached_key is escaped to make sure memcached protocol
> constraints are not violated - most notably, space and "%"
> character are escaped into "%20" and "%25", respectively (space is
> escaped as it's not allowed in memcached keys, and "%" to make the
> escaping reversible).
>
> Given the
>
>
> www.example.com/flights/istc-lonc-11062014/lonc-istc-19062014/Cheap-return-tickets-from-%C4%B0stanbul-to-Londra-in-Haziran.html?class=economy&adult=1
>
> $memcached_key, nginx will try to fetch
>
>
> www.example.com/flights/istc-lonc-11062014/lonc-istc-19062014/Cheap-return-tickets-from-%25C4%25B0stanbul-to-Londra-in-Haziran.html?class=economy&adult=1
>
> from memcached.
>
> --
> Maxim Dounin
> http://nginx.org/
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20140509/a31a7bbd/attachment-0001.html>


More information about the nginx mailing list