Welcome! Log In Create A New Profile

Advanced

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

June 09, 2016 07:24AM
Понял, еще один момент. А если мне надо получить такое поведение

http://example.com/api/test.php -> /vhosts/
example.com/public_html/api/web/test.php

как будет более правильно реализовать такое поведение? Сейчас реализовал
через set, но что то подсказывает, что это велосипед

location ~/api/(.*\.php$) {
set $file_path "$1";
error_page 406 = @fastcgi-api;
return 406;
}

location @fastcgi-api {
root /vhosts/example.com/public_html;
fastcgi_param SCRIPT_FILENAME $document_root/api/web/$file_path;
}

2016-06-09 14:02 GMT+03:00 Maxim Dounin <mdounin@mdounin.ru>:

> Hello!
>
> On Thu, Jun 09, 2016 at 01:40:28PM +0300, Alex Domoradov wrote:
>
> > Привет всем,
> >
> > столкнулся с казалось бы тривиальной задачей, для одного 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
>
> Потому что то, какая конфигурация была задана в location'е, в
> котором запрос обрабатывался ранее, не влияет на то, как он будет
> обрабатываться после перенаправления в другой location.
>
> Конфигурация для обработки запроса задаётся полностью в конкретном
> location'е. Наследование конфигурации - только на этапе её
> парсинга с предыдущих уровней, не более того.
>
> > Гугл предлагает такой вариант
> >
> >
> http://serverfault.com/questions/317641/nginx-multiple-document-roots-with-fastcgi
> >
> > хотелось бы узнать, это единственно верный способ решения данной задачи
> > (использование вложенных локейшенов)?
>
> Нет, не единственный. В вашем случае проще всего будет завести
> ещё один именованный location для обработки fastcgi, в котором и
> указать нужный root:
>
> location ~/api/.*\.php {
> root /vhosts/dev-designer/public_html/api;
> add_header X-DEBUG "LOC-API-PHP" always;
> error_page 406 = @fastcgi_api;
> return 406;
> }
>
> location @fastcgi_api {
> root /vhosts/dev-designer/public_html/api;
> fastcgi_pass ...
> ...
> }
>
> --
> Maxim Dounin
> http://nginx.org/
>
> _______________________________________________
> 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
Subject Author Posted

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

ALex_hha June 09, 2016 06:42AM

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

Maxim Dounin June 09, 2016 07:04AM

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

ALex_hha June 09, 2016 07:24AM

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

Maxim Dounin June 09, 2016 08:24AM

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

ALex_hha June 09, 2016 08:48AM

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

Maxim Dounin June 09, 2016 09:26AM

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

ALex_hha June 09, 2016 12:10PM

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

Maxim Dounin June 09, 2016 02:48PM

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

ALex_hha June 09, 2016 04:46PM

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

Maxim Dounin June 09, 2016 04:58PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 163
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready