configurar - VirtualHost siempre devuelve el host predeterminado con Apache en Ubuntu 14.04
virtual host apache centos (11)
Intento configurar un host virtual además del localhost
predeterminado. Cada vez que intento llamar a mi servidor virtual http://test
, obtengo el archivo de índice Apache2 predeterminado que se encuentra en el directorio http://localhost
. Además, apache devuelve esta página aún después de deshabilitar ( a2dissite
) ambos archivos VirtualHost y volver a cargar apache ( service apache2 reload
).
¿Qué podría salir mal si el host virtual no funciona?
Configuración:
Mi estructura de directorio es la siguiente:
/var/www/html # Default localhost dir
/var/www/html7index.html # Apache2 default index
/var/www/test # HTML dir for the virtual host
/var/www/test/index.html # My "website"
Contenido de /etc/hosts
:
127.0.0.1 localhost
127.0.1.1 Laptop
127.0.0.1 test
Contenido del directorio de /etc/apache2/sites-available
:
000-default.conf
default-ssl.conf
test.conf
Archivo 000-default.conf
:
<VirtualHost localhost:80>
ServerName localhost
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
File test.conf
:
<VirtualHost test:80>
ServerAdmin test@localhost
ServerName test
NameVirtualHost test
ServerAlias test
DocumentRoot /var/www/test
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Estaba enfrentando este problema, y resultó que tuve que deshabilitar el host virtual predeterminado.
sudo a2dissite 000-default.conf
Esto me ha mordido más de una vez; a veces habilitaba con sudo
, a veces no lo hacía.
Ubuntu 14.04 parece mostrar el mismo mensaje de cualquier manera. Cuando se mueve a 100 millas por hora, a veces se pierde un sudo
o dos.
El síntoma de que el nuevo sitio web haya regresado por error al directorio incorrecto ha sido mi única pista de que la habilitación nunca ocurrió. Yo diría que es un error.
¡Al menos debería advertir cuando un comando no se ejecuta!
He visto esto suceder cuando uso un nombre de dominio completo (FQDN) en el archivo / etc / hosts que es el mismo que el de un sitio al que estaba tratando de conectarme. Para resolver este problema tuve que cambiar el nombre del FQDN a algo que no sea uno de mis valores de VirtualHost ServerName.
Entonces, en otras palabras, si mi / etc / hostname era:
apple
Y en mi / etc / hosts, tuve:
192.168.54.34 apple.example.com apple
Y en mi /etc/apache2/sites-enabled/apple.example.com.conf tuve:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName apple.example.com
DocumentRoot /var/www/apple.example.com
DirectoryIndex index.html index.php
</VirtualHost>
apple.example.com sería aceptado por 000-default.conf porque también está listado en el archivo / etc / hosts. Para resolver esto, cambié el FQDN de mi servidor de la siguiente manera en el archivo / etc / hostname:
server1
y / etc / hosts file:
192.168.54.34 server1.example.com server1
Mi caso en Apache 2.4 el problema se resolvió agregando la configuración siguiente a la configuración del host virtual:
Listen 80
para que la configuración sea algo así como:
Listen 80
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName testsite.com
ServerAlias www.testsite.com
DocumentRoot /var/www/testsite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Para mí, comenzó a funcionar después de reiniciar apache con: sudo service apache2 reload. Y presionando ctrl + F5 en http: / test.
Revisé todas estas soluciones y ninguna de ellas funcionó. Luego, decidí regresar y consultar el archivo apache2.conf. Descubrí que la línea para incluir los archivos conf "habilitados para sitios" estaba comentada por defecto. Al descomentar la línea y reiniciar apache, solucionó mi problema (estaba cerca del final del archivo):
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
Si ya ha intentado lo siguiente:
1. Permisos comprobados de la raíz del documento y la carpeta principal.
2. a2dissite 000-default etc.
3. Reiniciado apache con sudo service apache2 reload
Y todavía no funciona, haz lo siguiente:
1. Habilite el registro de depuración:
vi /etc/apache2/apache2.conf
LogLevel debug
2. Reinicia apache2 y supervisa los registros
sudo service apache2 restart
tail -f /var/log/apache2/*.log
3. Observe si la IP del servidor se muestra en los registros como se esperaba:
==> /var/log/apache2/other_vhosts_access.log <== ip-xxx-xx-xx-xx.eu-west-2.compute.internal: 80 xx.78.xx.2xx - - [13 / sep / 2017: 18: 40: 44 +0100] "GET / HTTP / 1.1" 200 3509 "-" "Mozilla / 5.0 (X11; Ubuntu; Linux x86_64; rv: 55.0) Gecko / 20100101 Firefox / 55.0"
Notarás que en lugar de xxx.xx.xx.xx: 80 como una dirección IP típica
Tengo un FQDN como "ip-xxx-xx-xx-west-west-2.compute.internal: 80"
Estoy usando AWS Elastic IP para hacer una IP fija para mi servidor web Amazon EC2.
4. Verifique el encabezado de su archivo .conf de hosts virtuales
<VirtualHost 127.0.0.1:80 11.22.33.44:80>
# Added from nessus to make more secure
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
ServerName mydomain.com
...
OK, entonces, lo que vemos aquí es que le estamos diciendo a Apache que sirva a este vhost para las solicitudes de 127.0.0.1 u 11.22.33.44 en el puerto 80. Pero el servidor nunca ve estas IP ya que tiene ese FQDN extraño y por eso nunca coincide. Eureka!
SOLUCIÓN:
Agregue *: 80 a la etiqueta VirtualHost para que se vea así:
<VirtualHost 127.0.0.1:80 11.22.33.44:80 *:80>
Y reinicia Apache. Espero que esto ayude. Puede haber otras razones, pero si esta es la causa de su problema, entonces es hora de sentarse, tomar un té de cuppa y relajarse. Si no, espero que encuentres la solución.
PD. ¡Recuerde volver a colocar los registros para advertir en lugar de eliminar errores!
Solo señalar esto puede ser obvio para los usuarios experimentados, pero no tanto si se trata de un primer temporizador.
asegúrese de que la configuración que está usando en /sites-enabled
termine con un .conf
como se espera en su apache2.conf
Ese fue mi problema y lo solucionó.
si conserva el valor predeterminado con *: 80; * .443 asegúrese de que esté en la parte inferior, así que cambie el nombre 000-predeterminado a zzz-default
también me ha estado volviendo loco, he marcado mis archivos .conf una y otra vez, todo estaba absolutamente bien definido. Terminé en esta publicación probando los comandos a2ensite y a2dissite como un sudoer, reiniciando apache, aún aterrizando en la página de bienvenida de apache por defecto como si apache nunca hubiera desactivado el sitio predeterminado o tomado mi nuevo host virtual a bordo.
Resulta que estaba tratando de reiniciar apache sin usar sudo ...
service apache2 restart
utilizar
sudo service apache2 restart
tl; dr: Llámalo con sudo : sudo service apache2 reload
Parece que el comportamiento del service apache2 reload
me engañó. Ver el siguiente registro:
user@Laptop:/etc/apache2/sites-available$ sudo a2ensite test.conf
Enabling site test.
To activate the new configuration, you need to run:
service apache2 reload
user@Laptop:/etc/apache2/sites-available$ service apache2 reload
* Reloading web server apache2 *
user@Laptop:/etc/apache2/sites-available$
Intenta llegar a http://test
: NO funciona
user@Laptop:/etc/apache2/sites-available$ sudo service apache2 reload
* Reloading web server apache2 *
user@Laptop:/etc/apache2/sites-available$
Intenta llegar a http://test
: WORKING
Entonces, encuentra la diferencia! El punto es que pensé que se habría recargado correctamente en primer lugar. No hay entradas en los archivos de registro tampoco. Llamarlo con sudo
ayudó. ¿Es esto un error?