Como configurar o Apache e PHP-FPM para suportar vários subdomínios?

Possuo um servidor Apache que irá ter vários subdomínios rodando dentro dele, ex.:

www.example.com
api.example.com
dashboard.example.com
customer.example.com

Eu nstalei o Apache 2.4.41 e o PHP-FPM 7.4 no Ubuntu 20.04 seguindo os comandos abaixo:

sudo apt install apache2
sudo apt install php libapache2-mod-php
sudo a2dismod php7.4
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo apt install php-fpm
sudo apt install libapache2-mod-fcgid
sudo a2enconf php7.4-fpm
sudo a2enmod proxy
sudo a2enmod proxy_fcgi

Apenas fiz isso, nada mais, o PHP-FPM está rodando normalmente segundo o phpinfo().

Por padrão, o site 000-default está habilitado no Apache e posso acessá-lo via IP. Ao criar um arquivo PHP e HTML no diretório /var/www/html, posso acessar esses arquivos (PHP e HTML) normalmente, por exemplo: http://EXAMPLE-IP/arquivo.php

Mas ao criar um subdomínio e tentar acessar qualquer arquivo PHP, o erro No input file specified. é sempre exibido. No log do apache, a mensagem abaixo é exibida:

AH01071: Got error 'Unable to open primary script: /var/www/html/subdomain.example.com/index.php (No such file or directory)'

AH01071: Got error 'Unable to open primary script: /var/www/html/subdomain.example.com/index-2.php (No such file or directory)'

Mas se eu tentar o arquivo PHP do 000-default (/var/www/html/file.php) via subdomínio, ele executa ele.

Mas os arquivos HTML dentro do subdomínio são sempre exibidos corretamente.

Estes são meus VirtualHost configurados:

000-default.conf

<VirtualHost *:80>
    ServerAdmin example@example.com
    DocumentRoot /var/www/html

    LogLevel notice core:info
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ErrorLog syslog:local1

    Header append X-FRAME-OPTIONS "SAMEORIGIN"

</VirtualHost>

<VirtualHost *:80>
    ServerName MY-PUBLIC-IP
    Redirect 403 /
    ErrorDocument 403 "The operation had an error."
    DocumentRoot /var/www/html
</VirtualHost>

Este é um subdomínio (um de vários):

subdomain.example.com

<VirtualHost *:80>
    ServerAdmin example@example.com
    ServerName subdomain.example.com
    ServerAlias subdomain.example.com
    DocumentRoot /var/www/html/subdomain.example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Header append X-FRAME-OPTIONS "SAMEORIGIN"

    RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 (R=301,L)
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on

    SSLCertificateFile      /ssl-location/my-cert.crt
    SSLCertificateKeyFile   /ssl-location/my-cert.key
    SSLCertificateChainFile /ssl-location/my-cert-intermediary.crt

    Protocols h2 http/1.1

    # HSTS (mod_headers is required) (15768000 seconds = 6 months)
    Header always set Strict-Transport-Security "max-age=31536000"

    Header append X-FRAME-OPTIONS "SAMEORIGIN"

    <Directory /var/www/subdomain.example.com>
        Options None
        AllowOverride None
        Require all granted
    </Directory>

    ServerAdmin example@example.com
    ServerName subdomain.example.com
    ServerAlias subdomain.example.com
    DocumentRoot /var/www/html/subdomain.example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Por motivos de segurança, recomendado pela documentação da OWASP, eu defini no php.ini o valor doc_root = /var/www/html/, mas se eu mudar ele para doc_root = /var/www/html/subdomain.example.com, os arquivos PHP funcionam no meu subdomínio, e os do /var/www/html não mais.

Como faço para configurar o doc_root dinamicamente para esses subdomínios no PHP-FPM, sem precisar ter um servidor físico dedicado para cada subdomínio?

Observação:
Este é meu arquivo de configuração do FPM no Apache:

conf-enabled/php7.4-fpm.conf

# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
    # Enable http authorization headers
    <IfModule setenvif_module>
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>

    <FilesMatch ".+.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
    </FilesMatch>
    <FilesMatch ".+.phps$">
        # Deny access to raw php sources by default
        # To re-enable it's recommended to enable access to the files
        # only in specific virtual host or directory
        Require all denied
    </FilesMatch>
    # Deny access to files without filename (e.g. '.php')
    <FilesMatch "^.ph(ar|p|ps|tml)$">
        Require all denied
    </FilesMatch>
</IfModule>
</IfModule