Nginx может иногда порядочно вскипятить мозг, хотя в целом задача достаточно проста:
Отдавать с запроса / каталог на обработку из /usr/share/phpmyadmin, а с запроса /api отдавать каталог /var/www/html — там у нас собственно один единственный index.php принимающий запросы.
Загвоздка может состоять в том что php локейшену также нужно указать эти root директории, т.е. там прописать условия:
server {
listen 80;
listen [::]:80;
server_name localhost;
error_log off;
access_log off;
root /usr/share/phpmyadmin;
index index.php;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ ^/api {
root /var/www/html;
rewrite ^(.*) /?$1 last;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
set $php_root /usr/share/phpmyadmin;
if ($request_uri ~* ^/api) {
set $php_root /var/www/html;
}
root $php_root;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}