Estoy tratando de agregar un segundo host virtual a mi configuración de apache, pero parece que no puedo usar el nuevo host virtual.
Mi httpd.conf
solo contiene la siguiente línea:
ServerName radiofreebrighton.org.uk
También tengo un ports.conf
archivo que contiene lo siguiente:
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Tengo dos archivos en los sites-available
que se vincularon sites-enabled
por a2ensite
:
- radiofreebrighton.org.uk
- trafalgararches.co.uk
El contenido de la primera es:
<VirtualHost _default_:80>
DocumentRoot /home/tom/www
ServerAdmin [email protected]
ServerName radiofreebrighton.org.uk
ServerAlias www.radiofreebrighton.org.uk
<Directory /home/tom/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel error
CustomLog /var/log/apache2/access.log combined
Alias /wiki /home/tom/www/mediawiki/index.php
</VirtualHost>
El contenido de este último es:
<VirtualHost *:80>
DocumentRoot /home/tom/tata-www
ServerAdmin [email protected]
ServerName trafalgararches.co.uk
ServerAlias www.trafalgararches.co.uk
<Directory /home/tom/tata-www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
logLevel error
ErrorLog /var/log/apache2/error.log
</VirtualHost>
Pero cada vez que solicito una página de trafalgararches.co.uk, recibo una página de radiofreebrighton.org.uk. por que podria estar pasando esto? ¿Cómo puedo arreglarlo?
Editar:
Configuración de host virtual tal como lo entiende apache:
tom@rfb:/usr/local$ apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost trafalgararches.co.uk (/etc/apache2/sites-enabled/trafalgararches.co.uk:1)
Syntax OK
(Recogido a través de apache2ctl -S
aka httpd -S
.)
apache-2.2
virtualhost
Tom Wright
fuente
fuente
ServerName
yServerAlias
líneas. Además, asegúrese de haber reiniciado Apache.NameVirtualHost *:80
algún lugar en tu configuración?Respuestas:
Bueno, esta pregunta tiene más de un año, pero me he encontrado con un "problema" similar. Esto puede ser obvio, pero no olvide reiniciar el servicio apache después de habilitar un host virtual adicional. Vea, después de ejecutar
a2ensite
para el segundo host virtual, la salida deapache2ctl -S
mostrará que ambos sitios están disponibles (y uno de ellos es el predeterminado), incluso si no volvió a cargar Apache.Supongamos que tiene dos hosts virtuales: sitio1 y sitio2. Ejecutas
a2ensite site1
y luego vuelves a cargar el servicio apache. Ahora puede accederhttp://site1
y es el valor predeterminado. Ahora correa2ensite site2
, pero olvida reiniciar apache. La salida deapache2ctl -S
será:Pero cuando intenta cargar
http://site2
, en realidad cargará el sitio predeterminado (sitio1), ya que la configuración no se carga.fuente
Tuve un problema similar en el que mis vhosts adicionales en el puerto 443 (SSL / HTTPS) se dirigían al directorio del primer vhost listado. Apache esencialmente ignoraba la propiedad del nombre del servidor y coincidía solo en el puerto ip:.
Resulta que me faltaba el comando 'NameVirtualHost *: 443' para habilitar el alojamiento virtual con nombre para el puerto 443.
'NameVirtualHost *: 443' solo debe llamarse una vez, y debe definirse sobre sus vhosts para el puerto 443. Pongo mi definición en el archivo ports.config para que se vea así:
No olvide reiniciar apache después de cualquier cambio.
fuente
NameVirtualHost
produce este mensaje al inicio:AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf
Mis 2 centavos: como tengo que mantener una IP (no quiero que el sitio se sirva en todas las redes instaladas), sucedió que después de que la IP privada local del servidor cambió, olvidé cambiarla aquí:
NameVirtualHost 192.168.100.20:80 <VirtualHost 192.168.100.20:80>
Por supuesto, no es un problema de Apache hacerle saber que la IP no existe localmente.
fuente
Tom, mira aquí http://httpd.apache.org/docs/2.0/en/mod/core.html#namevirtualhost
Por lo tanto, debería estar bien si cambia el valor predeterminado a la dirección IP de su servidor.
fuente
Encuentro la respuesta desde aquí: http://alexking.org/blog/2007/11/01/apache-2-only-serves-first-virtual-host
Ponga 2 nombre de servidor en la misma etiqueta de VirtualHost 1 como a continuación:
Terminé teniendo problemas con el segundo sitio porque tenía dos bloques de etiquetas de VirtualHost.
fuente
Tuve este problema al migrar sitios a un nuevo servidor Ubuntu 16. Después de un poco de rascarse la cabeza, me di cuenta de que el Módulo SSL no estaba habilitado de manera predeterminada, por lo que cualquier cosa dentro de los
<IfModule mod_ssl.c>
bloques se ignora en silencio.Hace años, envolví todos mis vhosts SSL en este condicional, y esta vez acababa de copiar los archivos de configuración en el nuevo servidor.
Lo arreglé habilitando el módulo:
fuente
Descubrí que la fuente de este problema era una entrada / etc / hosts en mi servidor con la URL apuntando a la IP externa del servidor.
En un punto, debo haberlo configurado antes de que DNS estuviera listo, así que ingresé una entrada / etc / hosts en mi servidor apuntando a su propia IP externa:
Luego configuré un ServerAlias en un sitio existente para "vhost.example.com"
Pero nada de lo que pudiera hacer evitaría que Apache sirva el sitio default-ssl.conf para solicitudes SSL a vhost.example.com. El puerto 80 HTTP funcionó bien, pero el SSL siempre mostró el sitio predeterminado en su lugar. Al final, este hilo SO me llevó a probar "apachectl -S" que muestra sitios y finalmente pude resolverlo.
Por lo tanto, si obtiene el sitio SSL predeterminado en lugar del sitio que espera, ¡asegúrese de no agregar la dirección IP externa de su servidor en una entrada / etc / hosts! Algo muy extraño haber hecho en retrospectiva, ¡pero espero que esto ayude a alguien más!
fuente