Два экземпляра PHP на одном Nginx по разным адресам (основной и api)

Столкнулся с проблемой запуска двух экземпляров PHP на одном Nginx в Docker. Мне необходимо получить два маршрута, а именно основной localhost/(query), запросы на который будут обрабатывается MainServer, а так же localhost/api/v1/(query), запросы на который будут обрабатываться через ServicesServer.

Мой Docker docker-compose.yml:

version: "3.9"

networks:
  ost_network:
    driver: bridge

services:
  main_php:
    build: ./DockerSetting/MainPHP
    restart: always
    tty: true
    container_name: ost.main_php
    networks:
      - ost_network
    expose:
      - "9000"
    volumes:
      - .:/var/www/application

  services_php:
    build: ./DockerSetting/ServicesPHP
    restart: always
    tty: true
    container_name: ost.services_php
    networks:
      - ost_network
    expose:
      - "9001"
    volumes:
      - .:/var/www/application

  nginx:
    image: nginx:latest
    container_name: ost.nginx
    restart: always
    tty: true
    ports:
      - "80:80"
    volumes:
      - .:/var/www/application
      - ./DockerSetting/Nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./DockerSetting/Nginx/conf.d:/etc/nginx/conf.d
    networks:
      - ost_network

Мой Nginx конфиг, nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format compression '$remote_addr - $remote_user [$time_local] '
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$http_user_agent" "$gzip_ratio"';

    client_max_body_size 10000M;

    sendfile        on;
    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;
}

А так же сам конфиг сайта /conf.d/main.conf:

server {
    listen 80;

    server_name localhost;

    access_log /var/www/application/Logs/Nginx/access.log compression;
    error_log /var/www/application/Logs/Nginx/error.log;

    # Первое PHP приложение доступно по корневому пути
    location / {
        root /var/www/application/MainServer/Public;
        index index.php index.html;
        try_files $uri $uri/ /index.php?$query_string;

        location ~ \.php$ {
            fastcgi_pass main_php:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }

    # Второе PHP приложение доступно по /api/v1/
    location ^~ /api/v1/ {
        alias /var/www/application/ServicesServer/Public/;
        index index.php;
        try_files $uri $uri/ /index.php?$query_string;

        location ~ \.php$ {
            fastcgi_pass services_php:9001;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include fastcgi_params;
        }
    }

    location ~ /\.ht {
        deny all;
    }
}

Мне необходимо реализовать следующее: если в маршруте есть /api/v1/, то данный запрос необходимо перенаправлять на services_php соответственно. На данный момент у меня все запросы, кроме /api/v1/ идут на основной сервер и Nginx перенаправляет на services_php исключительно /api/v1/, если добавить дополнительный маршрут, к примеру /api/v1/string, то он перенаправиться на main_php. С чем может быть связана данная проблема? Судя по документации Nginx при указании пути /api/v1/ все запросы /api/v1/query должны идти именно на второй сервис services_php, чего у меня не происходит.

Так же, если я создаю два сайта на разных портах и обьеденяю их в прокси, то всё работает, но это не совсем то, что необходимо.

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://localhost:8081;
    }
    location /api/v1/ {
        proxy_pass http://localhost:8082;
    }
}

Ответы (0 шт):