Nginx/PHP-FPM use more than one webroot -


i'm faced problem nginx.

i'd distinct 2 cases:

  • first if request url matches /api/(*.) want return api/index.php

  • otherwise if url doesn't match it, public/index.php must returned.

i've tried several solutions, including:

someone explain me how achieve ?

thx :)

my files organised this:

/var/www/html | _ api |   | |   _ index.php | |_ public     |      _ index.php     |     _ js       |       _ index.js 

here server configuration:

    server {             listen 80;             server_name _;              index index.php;             rewrite_log on;               location / {                      root /var/www/html/public;                     try_files $uri $uri/ /index.php$is_args$args;                      location ~ \.php {                              include snippets/fastcgi-php.conf;                             fastcgi_pass unix:/run/php/php7.1-fpm.sock;                     }              }              location ^~ /api {                      root /var/www/html/api;                     try_files $uri $uri/ /index.php$is_args$args;                      error_log /var/log/nginx/admin-error.log debug;                      location ~ \.php {                              include snippets/fastcgi-php.conf;                             fastcgi_pass unix:/run/php/php7.1-fpm.sock;                     }             }     } 

content of snippets/fastcgi-php.conf:

# regex split $uri $fastcgi_script_name , $fastcgi_path fastcgi_split_path_info ^(.+\.php)(/.+)$;  # check php script exists before passing try_files $fastcgi_script_name =404;  # bypass fact try_files resets $fastcgi_path_info # see: http://trac.nginx.org/nginx/ticket/321 set $path_info $fastcgi_path_info; fastcgi_param path_info $path_info;  fastcgi_index index.php; include fastcgi.conf; 

and here admin-error.log file:

2017/08/14 18:53:31 [debug] 20331#20331: *75 http cl:-1 max:1048576 2017/08/14 18:53:31 [debug] 20331#20331: *75 rewrite phase: 3 2017/08/14 18:53:31 [debug] 20331#20331: *75 post rewrite phase: 4 2017/08/14 18:53:31 [debug] 20331#20331: *75 generic phase: 5 2017/08/14 18:53:31 [debug] 20331#20331: *75 generic phase: 6 2017/08/14 18:53:31 [debug] 20331#20331: *75 generic phase: 7 2017/08/14 18:53:31 [debug] 20331#20331: *75 access phase: 8 2017/08/14 18:53:31 [debug] 20331#20331: *75 access phase: 9 2017/08/14 18:53:31 [debug] 20331#20331: *75 access phase: 10 2017/08/14 18:53:31 [debug] 20331#20331: *75 post access phase: 11 2017/08/14 18:53:31 [debug] 20331#20331: *75 try files phase: 12 2017/08/14 18:53:31 [debug] 20331#20331: *75 http script var: "/api" 2017/08/14 18:53:31 [debug] 20331#20331: *75 trying use file: "/api"  "/var/www/html/api/api" 2017/08/14 18:53:31 [debug] 20331#20331: *75 http script var: "/api" 2017/08/14 18:53:31 [debug] 20331#20331: *75 trying use dir: "/api"  "/var/www/html/api/api" 2017/08/14 18:53:31 [debug] 20331#20331: *75 http script copy: "/index.php" 2017/08/14 18:53:31 [debug] 20331#20331: *75 http script var: "" 2017/08/14 18:53:31 [debug] 20331#20331: *75 trying use file:  "/index.php" "/var/www/html/api/index.php" 2017/08/14 18:53:31 [debug] 20331#20331: *75 internal redirect:  "/index.php?"   nginx version: nginx/1.12.1 

this configuration works :)

server {      listen 80;     server_name _;      index index.php;     rewrite_log on;      root /var/www/html;       location / {          try_files $uri /public/index.php$is_args$args;     }      location ^~ /api {          try_files $uri /api/index.php$is_args$args;          location ~ \.php {              include snippets/fastcgi-php.conf;             fastcgi_pass unix:/run/php/php7.1-fpm.sock;         }      }      location ~ \.php {          include snippets/fastcgi-php.conf;         fastcgi_pass unix:/run/php/php7.1-fpm.sock;     } } 

Comments

Popular posts from this blog

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

python Tkinter Capturing keyboard events save as one single string -

sql server - Why does Linq-to-SQL add unnecessary COUNT()? -