La configuración vhosts la he repartido en varios archivos especificos para cada dominio/subdominio, así puedo activarlos o desactivarlos facilmente (tal y como recomiendan en la guia de arch linux):
httpd.conf
Código
# Virtual hosts Include conf/extra/httpd-vhosts.conf # Available Vhosts Include conf/vhosts/example.dom Include conf/vhosts/sub1.example.dom Include conf/vhosts/sub2.example.dom
El archivo de configuración principal lo dejo para el bloque vhosts por defecto, el que se use cuando se accede al servidor mediante la ip pública o los nameservers (ns1.example.com), etc... Aquí estoy teniendo problemas y necesito saber como configurar correctamente el bloque vhosts default.
Código
<VirtualHost xxx.xxx.xxx.xxx:*> DocumentRoot "/srv/http/default" ServerName localhost </VirtualHost>
o
Código
<VirtualHost *> DocumentRoot "/srv/http/default" ServerName localhost </VirtualHost>
Si uso el primero se muestra siempre (da igual que pongas dominio/subdominio) el main document root de apche, que en arch linux es /srv/http y claro... puedes navegar por todas las carpetas que tengas (incluso desactivando -Indexes puedes usar la barra de navegación para averiguar nombres...).
Si uso el segundo se muestra siempre la carpeta default.
He probado quitando el bloque virtualhost default (comentando el archivo en httpd.conf) y lo mismo, se ignoran los bloques virtualhost de cada archivo, y siempre se muestra el main document root.
Código
# conf/vhosts/domain.dom <VirtualHost domain:80> ### Igual que abajo pero sin la configuración SSL </VirtualHost> <VirtualHost domain.com:443> ServerAdmin webmaster@domain.com DocumentRoot "/srv/http/domain.com/www" ServerName domain.com:443 ServerAlias www.domain.com:443 Protocols h2 h2c <Directory "/srv/http/domain.com/www"> Require all granted <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^index\.php$ - [L] RewriteRule . index.php [L] </IfModule> </Directory> <IfModule dir_module> DirectoryIndex index.php </IfModule> #SSLEngine on #SSLCertificateFile "/etc/httpd/conf/apache.crt" #SSLCertificateKeyFile "/etc/httpd/conf/apache.key" ErrorLog "/var/log/httpd/domain.com-error_log" CustomLog "/var/log/httpd/domain.com-access_log" common </VirtualHost>
Esta configuración funciona en mi ordenador personal, usando el sistema operativo Manjaro (que es Arch Linux) y recuerdo que funcionaba bien. Ahora estoy configurando un servidor ARM de scaleway y estoy usando arch linux.
¿Como puedo configurar correctamente los virtual hosts para que haya un bloque que muestre una página por defecto cuando ningún nombre de dominio/subdominio coincida con los que tengo?
Gracias.