Назад | Перейти на главную страницу

Неизвестный первичный скрипт Nginx FastCGI при использовании настройки с подстановочными знаками

Я пытаюсь настроить стек разработчика, в котором я могу просто создать новый каталог и сделать его доступным как поддомен через nginx. Я столкнулся с печально известной проблемой «первичный сценарий неизвестен», и я думаю, что это как-то связано с подстановочными знаками, поскольку эта точная конфигурация без нее отлично работает для другого проекта.
Это моя конфигурация nginx:

server {
    listen 80;
    listen [::]:80;

    server_name  ~^(.*)\.misc\.<VMhost>\.<server>\.network$; 

    error_log /vmdata/services/web/logs/misc/misc.error.log;
    access_log /vmdata/services/web/logs/misc/misc.access.log;

    client_max_body_size 8M;
    index index.php;

    if (!-d /vmdata/services/web/misc/$1) {
        rewrite . https://<server>.network/ redirect;
    }

    root /vmdata/services/web/misc/$1;


    location / {
        try_files $uri $uri/ index.php?$query_string =404;
    }

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

}

Это соответствующая часть моего docker-compose.yml:

misc:
    image: nginx-services:latest
    volumes:
        - /vmdata/services/web/conf.d/misc.conf:/etc/nginx/conf.d/default.conf
        - /vmdata:/vmdata
    labels:
        - "traefik.enable=true"
        - "traefik.docker.network=traefik-public"
        - "traefik.backend=misc"
        - "traefik.wildcard.frontend.rule=HostRegexp:{subdomain:[A-Za-z0-9-]+}.misc.<VMhost>.<server>.network"
        - "traefik.wildcard.frontend.headers.isDevelopment=true"
        - "traefik.frontend.rule=Host:misc.<VMhost>.<server>.network"
        - "traefik.static.frontend.headers.isDevelopment=true"
        - "traefik.port=80"
    environment:
        - NGINX_HOST=*.misc.<VMhost>.<server>.network
        - NGINX_PORT=80
    networks:
        - common
        - traefik-public

Когда я пытаюсь получить доступ к index.php (явно), журнал ошибок nginx показывает

2020/02/23 15:31:19 [error] 6#6: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 10.0.4.238, server: ~^(.*)\.misc\.<VMhost>\.<server>\.network$, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://10.0.5.51:9000", host: "<project>.misc.<VMhost>.<server>.network"

Простой доступ к субдомену показывает GET /

Я пробовал разные вещи, такие как добавление или удаление косых черт перед index.php и после каталогов в конфигурации nginx, но, похоже, это не помогает. Обратите внимание, что я отредактировал некоторую информацию, все это правильно отображается как в моих файлах конфигурации, так и в файлах журнала.

Что-то очевидно не так с моей конфигурацией?