@ex0rcist

Nginx, try_files — почему не работает?

Имеем такой конфиг -
set $static_root /home/....
set $folder ...

location @vincent {
  proxy_pass http://vincent;
}

location ~* "/img/([a-z0-9\-]{2,5})/([a-z]{1,3})/([0-9]{1,2}\.jpg)" {

  set $cache $static_root/cached/$folder/$1/$2/$3;
  set $cache_common $static_root/cached/common/$1/$2/$3;


  try_files $cache $cache_common @vincent;

  #if (-f $cache) {
  #    return 301; break;
  #
}


Получаем fallback на @vincent, хотя закешированный файл существует, и раскоментированный IF дает нам 301 страницу. Что я сделал не так?
  • Вопрос задан
  • 3155 просмотров
Пригласить эксперта
Ответы на вопрос 2
@neol
try_files не принимает абсолютные пути, всегда дописывая перед переданной строкой содержимое $document_root. Так что надо задать нормальное значение корня.
Получится что-то типа:
location ~* "/img/([a-z0-9\-]{2,5})/([a-z]{1,3})/([0-9]{1,2}\.jpg)" {
  root /;
  set $cache $static_root/cached/$folder/$1/$2/$3;
  set $cache_common $static_root/cached/common/$1/$2/$3;
  try_files $cache $cache_common @vincent;
}


Но лучше как-то так:

location ~* "/img/([a-z0-9\-]{2,5})/([a-z]{1,3})/([0-9]{1,2}\.jpg)" {
  root $static_root;
  set $cache /cached/$folder/$1/$2/$3;
  set $cache_common /cached/common/$1/$2/$3;
  try_files $cache $cache_common @vincent;
}
Ответ написан
Комментировать
@Grag
Сори что оффтоп, можешь пример конфига человеческого с ssl скинуть, а то я запарился тут спрашивать, ни кто не отвечает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы