Отчитываюсь: оказалось, что из закромов Debian ставится старенький nginx 0.6.32, который не поддерживает директиву try_files.
UpgradeПоиски привели меня на страничку
http://www.o-learn.com/content/how-to-compileinstall-and-upgrade-nginxПо этой инструкции обновился из исходников, только с поправкой на текущую cтабильную версию nginx-0.7.67
newnginx.sh
#! /bin/sh
# download and extract nginx
wget http://sysoev.ru/nginx/nginx-0.7.67.tar.gz
tar -zxvf nginx-0.7.67.tar.gz
# download and extract pcre library
wget http://sourceforge.net/projects/pcre/files/pcre/7.9/pcre-7.9.tar.gz/download
tar -xzf pcre-7.9.tar.gz
# configure and compile nginx
cd nginx-0.7.67
./configure –sbin-path=/usr/sbin –with-http_ssl_module –with-pcre=../pcre-7.9
make
#stop nginx to install new version file:
/etc/init.d/nginx stop
make install
Дальше надо кое-что допилить напильником. Оказалось, что новый nginx ищет конфиги не в /etc/nginx, а в /usr/local/nginx/conf/ — чтобы пользоваться уже настроенными конфигами, я поправил /etc/init.d/nginx — добавил опции:
DAEMON_OPTS="-p /etc/nginx/ -c nginx.conf"
Т.е. заставил его смотреть на старое место, а новые конфиги оставил для ленивого изучения.
На старте новый nginx ожидает увидеть папку logs в своей рабочей папке — дадим что просит.
ln -s /var/log/nginx /etc/nginx/logs
можно запускать /etc/init.d/nginx start
Использую try_files/etc/nginx/sites-available/site1
server {
listen site1.local:80;
server_name site1.local;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|html|htm)$
{
location ~* ^.+thumb/([a-z]+)/([0-9/]+)\.jpg$
{
try_files $uri @thumb;
}
root /web/site1/public_html/www;
access_log /var/log/nginx/site1.access.log;
}
location @thumb {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Работает как надо! Если в thumb не обнаружен jpg, то за работу принимается Apache с его mod_rewrite и в итоге запускается генератор превьюшек.
Некрасиво как-то дублировать location / и location @thumb, но по-другому не умею. Профи, ау!
ιιlllιlllι унц-унц