On 13 November 2012 10:41, Igor Sysoev <span dir="ltr"><<a href="mailto:igor@sysoev.ru" target="_blank">igor@sysoev.ru</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">On Tue, Nov 13, 2012 at 10:22:53AM +0100, Nilshar wrote:<br>
> On 13 November 2012 10:01, Igor Sysoev <<a href="mailto:igor@sysoev.ru">igor@sysoev.ru</a>> wrote:<br>
><br>
> > On Nov 13, 2012, at 12:41 , Nilshar wrote:<br>
> ><br>
> > On 13 November 2012 09:38, Igor Sysoev <<a href="mailto:igor@sysoev.ru">igor@sysoev.ru</a>> wrote:<br>
> ><br>
> >> On Nov 13, 2012, at 12:32 , Nilshar wrote:<br>
> >><br>
> >> Hello list,<br>
> >><br>
> >> I got an issue with a filename containing "strange" characters.<br>
> >> It seems that nginx is not able to url_decode correctly, and then get the<br>
> >> right file.<br>
> >><br>
> >> Yes, the filename is ugly : "Capture d’écran 2010-09-25 à 08.30.07.png"<br>
> >> but apache is able to read it, and nginx is not :<br>
> >><br>
> >> nginx strace :<br>
> >> open("/<path>/images/Capture%20d%E2%80%99%C3%A9cran%202010-09-25%20%C3%A0%2008.30.07.png",<br>
> >> O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)<br>
> >><br>
> >> apache strace :<br>
> >> open("/<path>/images/Capture d\342\200\231\303\251cran 2010-09-25<br>
> >> \303\240 08.30.07.png", O_RDONLY|O_CLOEXEC) = 100<br>
> >><br>
> >> So it seems that nginx is using the url_encoded version of the filename,<br>
> >> while apache do it's own thing on it.<br>
> >><br>
> >> On both apache and nginx, the access log says : "GET<br>
> >> /images/Capture%20d%E2%80%99%C3%A9cran%202010-09-25%20%C3%A0%2008.30.07.png"<br>
> >><br>
> >> both server have the same locales settings, and I tried different charset<br>
> >> configuration into nginx, but no luck..<br>
> >><br>
> >> Any idea how I can fix that without changing the filename (sadly, it's<br>
> >> not possible :/) ?<br>
> >><br>
> >><br>
> >> The most probably there is a rewrite in configuration which changes URI<br>
> >> to $request_uri.<br>
> >> nginx escapes URI if no one interferes.<br>
> >><br>
> >><br>
> > Yes indeed, there is a rewrite !<br>
> > got a tip on how to fix that ?<br>
> ><br>
> ><br>
> > The general rule is to not use rewrites at all: they make configuration to<br>
> > a mess.<br>
><br>
</div></div><div class="im">> Hum... well ok, if I read it right, it is recommanded to use try_files<br>
> instead right ?<br>
> Problem is that it seems that try_files is not allowed inside a "if"...<br>
><br>
> Well.. maybe someone will be able to point me a better conf, here what I'm<br>
> trying to do :<br>
><br>
>         location ~ ^/(media|files|list|album|images)/ {<br>
>                 root /;<br>
>                 if ($host ~* "^(.)(.)(.*)\.<a href="http://example.com" target="_blank">example.com</a>$") {<br>
>                         set $dir1 $1;<br>
>                         set $dir2 $2;<br>
>                         set $dir3 $3;<br>
>                         rewrite ^ /<path>/<br>
> <a href="http://www.example.com/$dir1/$dir2/$dir1$dir2$dir3$request_uri" target="_blank">www.example.com/$dir1/$dir2/$dir1$dir2$dir3$request_uri</a>? break;<br>
>                 }<br>
>         }<br>
><br>
> So I should be able to remove the if so try_files might be happy, but I do<br>
> not know how to set the 3 dir w/o the if statement..<br>
> I tried several things, so far no luck.<br>
<br>
</div>server {<br>
    server_name ~^(?<dir1>.)(?<dir2>.)(?<dir3>.*)\.example\.com$;<br>
<br>
    root /path/<a href="http://www.example.com/$dir1/$dir2/$dir1$dir2$dir3" target="_blank">www.example.com/$dir1/$dir2/$dir1$dir2$dir3</a>;<br>
<br>
    location /media/  { }<br>
    location /files/  { }<br>
    location /list/   { }<br>
    location /album/  { }<br>
    location /images/ { }<br>
<br>
    location / { return 404; }<br>
<div class="im">}<br>
<br>
<br>
--<br>
Igor Sysoev<br>
<a href="http://nginx.com/support.html" target="_blank">http://nginx.com/support.html</a></div></blockquote><div><br></div><div>Well... simple, clear and... works perfectly !</div><div>very hard to switch from an apache logic to a nginx logic, but I'll improve :p</div>
<div><br></div><div>Thanks a lot Igor !</div><div><br></div><div>Nilshar. </div></div></div>