Re: простая статика и регулярки

Mihail Nasedkin m.nasedkin at gmail.com
Fri Jun 27 02:58:19 UTC 2014


Спасибо, Максим.

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
>
> Вам показалось, процитированное регулярное выражение - не
> работает.

Реально работает, я голову сломал.

>
>> Вопрос: почему не работает "вроде более правильная" регулярка
>> location ~ ^/(images|css|js|files)/ { ... ? (символ начала строки
>> первый)
>
> А эта - как раз должна работать.
> Видимо, результаты тестирования - обратны тому, что на самом деле.

Не работает, я голову сломал.

>
>> 2. Далее пытаюсь для подкаталога /images/foo/ сделать отдельный локейшн:
>> location ~ ^/images/foo/ {
>>        root /path/to/static;
>>        access_log off;
>>        add_header Content-Type image/jpeg;
>>        expires max;
>> }
>> Получаю 403 ошибку, хотя, повторюсь, в первом локейшене все нормально
>> отдает, т.е. права на файлы точно открыты.
>
> В error log'е должно быть написано, почему ошибка.  Подозреваю,
> что вы попытались запросить индекс, в то время как его нет, а
> autoindex - запрещён.
>
> http://nginx.org/r/index
> http://nginx.org/r/autoindex
>
>> Подскажите, пожалуйста, в чем косяки?
>
> Основная проблема в том, что вы используете регулярные выражения
> там, где без них можно прекрасно обойтись.  Используйте префиксные
> location'ы - и конфигурация станет куда проще и понятнее.

Хорошо, сделал как надо:

    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 mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru


-- 
---
С уважением,
Михаил Наседкин


Подробная информация о списке рассылки nginx-ru