Re: простая статика и регулярки
    Maxim Dounin 
    mdounin at mdounin.ru
       
    Fri Jun 27 14:03:56 UTC 2014
    
    
  
Hello!
On Fri, Jun 27, 2014 at 08:58:19AM +0600, Mihail Nasedkin wrote:
> Спасибо, Максим.
> 
> 26.06.14, Maxim Dounin<mdounin at mdounin.ru> написал(а):
> > Hello!
> >
> > On Thu, Jun 26, 2014 at 03:42:35PM +0600, Mihail Nasedkin wrote:
> >
> >> Доброго всем,
> >>
> >> 1. Странная регулярка для статики:
> >>
> >> location ~ /^(images|css|js|files)/ {
> >>         root /path/to/static; # A request for "/images/foo.ext" will
> >> return the file /path/to/static/images/foo.ext
> >>         access_log off;
> >>         expires 30d;
> >> }
> >> Эта регулярка работает, в т.ч. для запросов типа /images/foo/bar.jpg
> >
> > Вам показалось, процитированное регулярное выражение - не
> > работает.
> 
> Реально работает, я голову сломал.
Не работает.  Вы наблюдаете эффект от сложного конфига, в котором 
запрос попадает не туда, куда вам кажется, и от этого кажется, что 
работает.
Вынесите соответствующее регулярное выражение в отдельный блок 
server, в конфиг вида:
    server {
        server_name foo;
        location / {
            return 200 "this is location /\n";
        }
        location ~ /^(images|css|js|files)/ {
            return 200 "this is location /^(images|css|js|files)/\n";
        }
    }
И убедитесь, что оно не работает:
$ fetch -qo - http://localhost:8080/images/foo.jpg
this is location /
Что конкретно происходит в вашем конфиге, и почему вам кажется, 
что оно работает - "по хвосту" сказать нельзя.  Нужно смотреть на 
весь блок server{} как минимум.
[...]
> Хорошо, сделал как надо:
> 
>     location /static/ {
>         root /path/to/static;
>         access_log off;
>         expires max;
>     }
> 
> Но почему возникают проблемы с доступом к файлу open()
> "/path/to/static/foo/bar.ext" failed (13: Permission denied)?
> Ведь в локации с регулярным выражением этот файл отдает! Права доступа
> проверил сотню раз. Я так понимаю, построение автоиндекса каталога не
> задействовано, запрошен конкретный файл.
Насколько я понимаю, с этим вы уже разобрались, и дело было в 
правах.
-- 
Maxim Dounin
http://nginx.org/
    
    
Подробная информация о списке рассылки nginx-ru