Apache Vhost no funciona

Apache Vhost no funciona

Tengo varios dominios que se refieren a un mismo servidor. Ahora quiero crear un Vhost para cada dominio. Esto ya funciona para algunos dominios, pero no para todos.

Ejemplo: navego hasta el dominio "b.com" y obtengo el sitio web que debería mostrarse para "a.com". Sin embargo, con "a.com" todo funciona. La solicitud de "b.com" también se guarda en el registro de "a.com" y allí también indica que he navegado a "a.com".

La gestión de DNS está en Cloudflare. Cada dominio tiene un registro TXT con su nombre de dominio.

¿Me puedes ayudar?

He minimizado mis configuraciones al mínimo. Entonces esos son los 2 archivos.

Primera configuración:

<VirtualHost a.com:80>
  Servername a.com
  DocumentRoot /var/www/a.com
</VirtualHost>

Segunda configuración:

<VirtualHost b.com:80>
  Servername b.com
  DocumentRoot /var/www/b.com
</VirtualHost>

¡Gracias de antemano!

Respuesta1

El parámetro for <VirtualHost ...>le dice al servidor web quédirección IP localpara unirse a. Incluso si especifica un nombre, solo se usa para resolver una dirección IP. (Por ejemplo, se utiliza cuando el servidor tiene muchas direcciones IP y cada dominio tiene una dirección IP dedicada).

La mayoría de los vhosts se basan en nombres, no en direcciones, por lo que este parámetro es inútil y simplemente debe especificar la dirección comodín *en su lugar. En cambio, el servidor web Apache distingue los vhosts por sus parámetros ServerNamey ServerAlias.

Un estandarvhost basado en nombresla configuración se ve así:

<VirtualHost *:80>
    ServerName a.example.tld
    DocumentRoot /var/www/a
</VirtualHost>

<VirtualHost *:443>
    ServerName a.example.tld
    DocumentRoot /var/www/a
    SSLEngine On
    SSLCertificateFile [...]
</VirtualHost>

---

<VirtualHost *:80>
    ServerName b.example.tld
    DocumentRoot /var/www/b
</VirtualHost>

<VirtualHost *:443>
    ServerName b.example.tld
    DocumentRoot /var/www/b
    SSLEngine On
    SSLCertificateFile [...]
</VirtualHost>

Si se supone que el servidor debe proporcionar HTTP y HTTPS, aún deberá definir el vhost para cada puerto (:80 y :443). Si necesita esto o no, posiblemente dependa de su configuración de Cloudflare.

Si estas usandoviejoPara versiones de Apache como la v2.2 o anteriores, también necesita estas opciones (ya no existen en la v2.4 o posteriores):

NameVirtualHost *:80
NameVirtualHost *:443

información relacionada