Hosts virtuales Debian 10 apache2 para subdominio

Hosts virtuales Debian 10 apache2 para subdominio

Tengo Debian 10y apache2y en virtual hostsconfiguración para subdominio. Configuración para el dominio principal:

<VirtualHost *:80>
    ServerName system.com
    ServerAlias system.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/system.com
    
    <Directory /var/www/system.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
</VirtualHost>

Para la configuración de mi subdominio en host virtual:

<VirtualHost *:80>
    ServerName api.system.com
    ServerAlias api.system.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/api.system.com
    
    <Directory /var/www/api.system.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
#       Order Allow,Deny
#       Allow from All
    </Directory>

    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Y ahora, cuando escribo system.com en mi navegador, muestra index.html del directorio system.com. Cuando escribo api.system.com, muestra index.html de la carpeta api.system.com.

Salida para comando: sudo apache2ctl -S:

my@server088331:/etc/apache2/sites-available$ sudo apache2ctl -S
VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server api.system.com (/etc/apache2/sites-enabled/api.system.conf:1)
         port 80 namevhost api.system.com (/etc/apache2/sites-enabled/api.system.conf:1)
                 alias api.system.com
         port 80 namevhost phpmyadmin.system.com (/etc/apache2/sites-enabled/phpmyadmin.conf:1)
                 alias phpmyadmin.system.com
         port 80 namevhost system.com (/etc/apache2/sites-enabled/system.conf:1)
                 alias system.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

Todo parece estar bien, pero el problema está en el subdominio. Cuando escribo api.system.com obtengo el contenido de index.html del directorio api.system.com. Pero cuando escribo, por ejemplo, api55.system.com, obtengo index.html de api.system.com. El mismo resultado es para api41.system.com, etc. A pesar de que estos dominios no existen y no existe configuración en hosts virtuales para estos dominios.

Cómo configurar hosts virtuales para permitir obtener index.html solo para un dominio específico. Porque cuando agrego un segundo dominio, solo debería obtener el archivo de la carpeta asignada en el host virtual para un subdominio determinado.

Respuesta1

Supongo que todos los hosts por los que navega tienen la misma dirección IP. Quizás esto ayudaría

RewriteEngine on
RewriteCond   %{HTTP_HOST} !^api.system.com
RewriteRule ^ - [L,R=404]

No lo he probado en mis propios sistemas, pero debería devolver un error 404 al navegar a cualquier URL que no sea api.system.com. ¿Es esto lo que estás pidiendo?

información relacionada