<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Привет всем, <br><br>столкнулся с казалось бы тривиальной задачей, для одного location надо задать root отличный от того, что задан на уровне server<br><br><pre class=""><span style="font-family:monospace,monospace"><span class="">server</span> {

   <span class="">root</span> /vhosts/<a href="http://example.com/public_html/web/">example.com/public_html/web/</a>;
   
   <span class="">location</span> ~/api/.*\.php {
      <span class="">root</span> /vhosts/dev-designer/public_html/api;
      <span class="">add_header</span> X-DEBUG <span class="">"LOC-API-PHP"</span> always;
      <span class="">error_page</span> <span class="">406</span> = <span class="">@fastcgi</span>;
      <span class="">return</span> <span class="">406</span>;
   }
   
   <span class="">location</span> ~/api/ {
      <span class="">add_header</span> X-DEBUG <span class="">"API"</span> always;
      <span class="">root</span> /vhosts/<a href="http://example.com/public_html/api">example.com/public_html/api</a>;
   }

   <span class="">location</span> <span class="">~ \.php$</span> {
      <span class="">error_page</span> <span class="">406</span> = <span class="">@fastcgi</span>;
      <span class="">return</span> <span class="">406</span>;
   }

   <span class="">location</span> <span class="">@fastcgi</span> {
      <span class="">add_header</span> X-DEBUG <span class="">"FAST-CGI"</span> always;
   
      <span class="">fastcgi_pass</span> unix:/run/php/php5.6-fpm.sock;
      <span class="">fastcgi_param</span> SCRIPT_FILENAME <span class="">$document_root</span><span class="">$fastcgi_script_name</span>;
      ...
   }
}</span></pre>но в таком случае, запрос попадает в <span style="font-family:monospace,monospace"><span class="">@fastcgi,</span></span><span class=""> но при этом root у него остается дефолтный.</span><span class=""> При этом если я коментирую <b>error_page/return</b> в <b>~/api/.*\.php</b>, то я вижу что запрос попадает в этот location и root у него меняется, но почему то с учетом return root остается с уровня server<br><br>Гугл предлагает такой вариант<br><br><a href="http://serverfault.com/questions/317641/nginx-multiple-document-roots-with-fastcgi">http://serverfault.com/questions/317641/nginx-multiple-document-roots-with-fastcgi</a><br><br></span></div><div class="gmail_default" style="font-family:verdana,sans-serif"><span class="">хотелось бы узнать, это единственно верный способ решения данной задачи (использование вложенных локейшенов)?<br></span></div><div class="gmail_default" style="font-family:verdana,sans-serif"><span style="font-family:monospace,monospace"><span class=""></span></span></div></div>