Я пытаюсь настроить стек разработчика, в котором я могу просто создать новый каталог и сделать его доступным как поддомен через 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, но, похоже, это не помогает. Обратите внимание, что я отредактировал некоторую информацию, все это правильно отображается как в моих файлах конфигурации, так и в файлах журнала.
Что-то очевидно не так с моей конфигурацией?