root /data/cache; location / { try_files $uri $uri/ @fallback; index index.php index.html index.htm; }
location ~ \.php$ { try_files $uri @fallback; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } location @fallback { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/index.php; include fastcgi_params; } 1 июня 2015 г., 21:19 пользователь AlexsnderS <nginx-fo...@nginx.us> написал: > Здравствуйте! > > Задача в следующем: > Поймать по регулярке адрес, по регулярке его превратить в путь к файлу. Если > файл есть на диске, то отдать его клиенту, если нет, то передать запрос в > index.php > > #перехватываю запрос > location = ^/news.*\.jpg$ { > #превращаю запрос в путь к файлу > rewrite ^/news/[\w\-_]+/([\w\-_]+)\-(\d+x\d+x[p|i])-(\d+)\.jpg$ > /data/cache/news/$3/$1-$2\.jpg break; > #проверяю есть ли он на диске, если нет, то отдаю в index.php > } > > location = ^/data/cache/news/.* { > try_files $uri /index.php; > } > > Например алгоритм такой: > 1. Получаю запрос: /news/test/test-100x100xp-10.jpg > 2. Сработал location > 3. Этот запрос преобразовался в /data/cache/news/10/test-100x100xp.jpg > 4. Проверка файла на наличие на диске > 4.1 Файл есть - отдаем клиенту > 4.2 Файла нет - отдаем обработку в index.php > > Испробовал кучу вариантов, но так толком ничего и не добился. Помогите, > пожалуйста. > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,259310,259310#msg-259310 > > _______________________________________________ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru