Ошибка FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

Пытаюсь поднять в Docker'e фулстек приложение на React + php Laravel. Путем гугла собрал конфиг docker-compose.yml

version: "3.0"
services:
  back:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./back:/var/www
    working_dir: /var/www
    depends_on:
      - mysql-server
  front:
    image: node:lts-alpine3.14
    volumes:
      - ./front:/app
    working_dir: /app
    tty: true
    command: sh -c 
      "npm install &&
       npm run build
       "
  mysql-server:
    image: mysql:latest
    environment:
      - MYSQL_ROOT_PASSWORD=Pavlik1234
    ports:
      - "3306:3306"
    volumes:
      - mysqldata:/var/lib/mysql
    entrypoint: "bash -c 'echo -e \"CREATE DATABASE IF NOT EXISTS rosbuket;\" > /docker-entrypoint-initdb.d/rosbuket.sql &&
                          /entrypoint.sh mysqld'"
  nginx:
    image: nginx:stable-alpine
    ports:
      - "80:80"
    depends_on:
      - back
    volumes:
      - ./nginx:/etc/nginx/conf.d/
      - ./front:/sites/rosbuket
      - ./back:/var/www/
volumes:
  mysqldata:
    driver: local

И докер файл с fpm'ом:

FROM php:7.4-fpm

COPY /back/composer.lock /back/composer.json /var/www

WORKDIR /var/www

RUN apt-get update && apt-get install -y \
    build-essential \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    zip \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    curl \
    libzip-dev

RUN apt-get clean && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-install pdo_mysql zip exif pcntl
RUN docker-php-ext-install gd

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www

COPY ./back /var/www

COPY --chown=www:www . /var/www

USER www

EXPOSE 9000
CMD ["php-fpm"]

Но в логах nginx контейнера показывает ошибку

[error] 24#24: *9 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.22.0.1, server: rosbuket, request: "GET /api/admin/settings HTTP/1.1", upstream: "fastcgi://172.22.0.4:9000", host: "rosbuket", referrer: "http://rosbuket/"

Фронт стартует, компилится, но запросы не проходят, в консоли 404 и в ответе file not exist. Не могу уже два дня сообразить, что не так, где ошибка. Конфиг nginx:

server {
  listen 80;
  client_max_body_size 100M;
  server_name rosbuket;

  location / {
    root /sites/rosbuket/build;
    try_files $uri /index.html;
  }

  location /api {
    root public;
    fastcgi_pass back:9000;
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

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

Автор решения: Aleksey Vaganov

Пропишите корректный root.

У вас проект монтируется в папку

    volumes:
      - ./back:/var/www

А в конфигах nginx: root public; и root /sites/rosbuket/build;

Если у вас единственная точка входа в приложение /var/www/public/index.php то замените свой location /api на этот:

location /api {
    fastcgi_pass back:9000;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /var/www/public/index.php;
    fastcgi_param PATH_INFO       $request_uri;  
}

→ Ссылка