$memcached_key doesn't fetch unicode url

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-İstanbul-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-İstanbul-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.

Roy.

Hello!

On Sun, May 04, 2014 at 06:42:39PM +0300, kirpit wrote:

    set                 $memcached_key "$host$request_uri";

www.example.com/flights/istc-lonc-11062014/lonc-istc-19062014/Cheap-return-tickets-from-İstanbul-to-Londra-in-Haziran.html?class=economy&adult=1

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-İstanbul-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-%C4%B0stanbul-to-Londra-in-Haziran.html?class=economy&adult=1

from memcached.


Maxim D.
http://nginx.org/

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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs