fastcgi и несколько document root

Alex Domoradov alex.hha на gmail.com
Чт Июн 9 10:40:28 UTC 2016


Привет всем,

столкнулся с казалось бы тривиальной задачей, для одного location надо
задать root отличный от того, что задан на уровне server

server {

   root /vhosts/example.com/public_html/web/;

   location ~/api/.*\.php {
      root /vhosts/dev-designer/public_html/api;
      add_header X-DEBUG "LOC-API-PHP" always;
      error_page 406 = @fastcgi;
      return 406;
   }

   location ~/api/ {
      add_header X-DEBUG "API" always;
      root /vhosts/example.com/public_html/api;
   }

   location ~ \.php$ {
      error_page 406 = @fastcgi;
      return 406;
   }

   location @fastcgi {
      add_header X-DEBUG "FAST-CGI" always;

      fastcgi_pass unix:/run/php/php5.6-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      ...
   }
}

но в таком случае, запрос попадает в @fastcgi, но при этом root у него
остается дефолтный. При этом если я коментирую *error_page/return* в
*~/api/.*\.php*, то я вижу что запрос попадает в этот location и root у
него меняется, но почему то с учетом return root остается с уровня server

Гугл предлагает такой вариант

http://serverfault.com/questions/317641/nginx-multiple-document-roots-with-fastcgi

хотелось бы узнать, это единственно верный способ решения данной задачи
(использование вложенных локейшенов)?
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20160609/703a2ca1/attachment.html>


Подробная информация о списке рассылки nginx-ru