Tengo algunos sitios configurados como VirtualHosts usando Apache que han estado funcionando bien por un tiempo. Recientemente cambié el nombre de host del servidor a uno de los nombres de dominio que se servía, y también lo agregué a / etc / hosts apuntando a la dirección IP externa del servidor.
Desde que hice eso, acceder al dominio desde mi computadora portátil me lleva al valor predeterminado "¡Funciona!" De Apache página. Si elimino 000-default de / etc / apache2 / sites-enabled /, muestra el sitio correcto. Intentando acceder al sitio con el 'www.' el prefijo me lleva al sitio correcto independientemente de si 000-default está o no en sitios habilitados.
Basado en todo eso, supongo que la configuración predeterminada está sirviendo la página predeterminada debido a cómo configuré el nombre de host o / etc / hosts (o ambos), pero no puedo encontrar la manera de desactivar eso mientras dejando esas configuraciones como están. Cualquier sugerencia bienvenida!
Editar: mi configuración actual de VirtualHost se ve así:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
ServerAdmin [email protected]
DocumentRoot /srv/www/domain
ErrorLog /srv/www/domain/logs/error.log
CustomLog /srv/www/domain/logs/access.log combined
</VirtualHost>
Para resumir: tengo varios VirtualHosts configurados, y este es el único que no funciona correctamente. Puedo acceder a http://www.domain.com muy bien, pero http://domain.com me lleva al valor predeterminado de "Apache" de Apache. página. Si desactivo la configuración predeterminada de 000, muestra la página correcta. Esto solo comenzó a suceder después de configurar el nombre de host del servidor en domain.com y agregar una línea a / etc / hosts que apunta a domain.com a la dirección IP externa del servidor. Me gustaría dejarlos así si es posible.
Editar: corrí apache2ctl -S
desde que /usr/sbin/apache2 -S
me dio "apache2: nombre de usuario incorrecto $ {APACHE_RUN_USER}". Aquí está la salida:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server domain.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost domain.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost other.com (/etc/apache2/sites-enabled/other:1)
port 80 namevhost another.com (/etc/apache2/sites-enabled/another:1)
port 80 namevhost domain.com (/etc/apache2/sites-enabled/domain:1)
Syntax OK
fuente
Respuestas:
Perdí esta pregunta el otro día.
Cuando tenga un contenedor <VirtualHost> sin un componente ServerName, utilizará el nombre de host predeterminado. Como 000-default probablemente no tiene un componente ServerName, y es el primero en ser incluido alfabéticamente, es por eso que responde por hostname.com y no permite que su nombre de host declarado explícitamente funcione.
fuente
ServerName example.com
embargo, la configuración en la configuración predeterminada funciona muy bien. ¡Gracias!¿Tiene una directiva NameVirtualHost *: 80 en alguna parte?
Tratar:
Eso le dirá cómo Apache está analizando el archivo de configuración. ¿Tiene configuraciones que tienen IP reales o todas tienen el *? ¿Te falta alguno de los 80? A Apache no le gusta mezclarlos.
¿Tiene un ServerName domain.com o ServerAlias domain.com en forma predeterminada?
fuente
Verifique ServerName y ServerAlias en la directiva VirtualHost:
Lea: http://httpd.apache.org/docs/2.2/mod/core.html#serveralias , http://httpd.apache.org/docs/2.2/vhosts/
fuente
Esto funcionó:
cuando tuve un error tipográfico, NO funcionó (la directiva ServerName dos veces):
Cuando tuve la directiva ServerName dos veces, seguía resolviéndose en el primer sitio enumerado (no se muestra aquí).
Espero que esto ayude a alguien ...
fuente
Tuve un problema similar y lo solucioné estableciendo explícitamente un ServerName en el archivo httpd.conf principal, en lugar de dejar que Apache descubriera automáticamente que era. Supongo que lo que apache decidió era lo mismo que mi vhost (definido más adelante), por lo que el predeterminado "ganó", anulando la configuración de vhost.
Acabo de configurar httpd.conf ServerName en un nombre de host que tiene la máquina, nunca serviré páginas web.
fuente