Re: простая статика и регулярки
Maxim Dounin
mdounin at mdounin.ru
Thu Jun 26 11:47:55 UTC 2014
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'ы - и конфигурация станет куда проще и понятнее.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru