URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7812
[ Назад ]

Исходное сообщение
"nginx location rewrite"

Отправлено гость , 26-Ноя-13 18:54 
Приветствую всех.

Как настроить location в nginx так, чтобы
для get-запросов вида /index.php?p1=val1&p2=val2&p3=val3
проверять существует ли файл /tmp/val1_val2_val3
если такой есть, то отдаем его, иначе отправляем к бэкенду php-fpm

Спасибо.


Содержание

Сообщения в этом обсуждении
"nginx location rewrite"
Отправлено erera22 , 27-Ноя-13 19:11 
> Приветствую всех.
> Как настроить location в nginx так, чтобы
> для get-запросов вида /index.php?p1=val1&p2=val2&p3=val3
> проверять существует ли файл /tmp/val1_val2_val3
> если такой есть, то отдаем его, иначе отправляем к бэкенду php-fpm
> Спасибо.

Если решать задачу в лоб, то как-то так:

location ~ /index.php {
  if ($args ~* "p1=val1&p2=val2&p3=val3") {
    rewrite ^ /static/$arg_p1/$arg_p2/$arg_p3 last;
  }
}

location ~ ^/static/(.*)/(.*)/(.*)$ {
  root "/tmp";
  set $filename $1_$2_$3;
  try_files /123/$filename @backend;
}

location @backend {
  proxy_pass ...
}


Хотя косячно, на @backend придется получать изначальное значение $filename.


"nginx location rewrite"
Отправлено гость , 28-Ноя-13 20:10 
> Хотя косячно, на @backend придется получать изначальное значение $filename.

Так файл скрипта всегда index.php, или портится вся строка запроса с get-параметрами?
Благодарю за помощь.