¿Qué es un Virtual Host en Apache?
El virtual host es un método para alojar varios nombres de dominio en un solo servidor, lo que permite que un servidor comparta sus recursos, como la memoria y los ciclos del procesador, sin necesidad de que todos los servicios prestados utilicen el mismo nombre de host. El término "virtual host" se suele utilizar para referirse a los servidores web, pero los principios se aplican a otros servicios de Internet.
Una aplicación muy utilizada es el hospedaje compartido de la web. El precio del alojamiento web compartido es inferior al de un servidor web dedicado porque muchos clientes pueden ser alojados en un solo servidor. También es muy común que una sola entidad desee utilizar varios nombres en la misma máquina, de modo que los nombres puedan reflejar los servicios ofrecidos y no el lugar en que esos servicios están alojados.
Ejemplo de Virtual Host Apache para crear un dominio o subdominio en Apache 2.4
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/midominio.com/public_html
ServerName www.midominio.com
ServerAlias midominio.com
<Directory /var/www/dominio/public_html/ >
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error_midominio.com.log
CustomLog ${APACHE_LOG_DIR}/access_midominio.com.log combined
<IfModule mod_dir.c>
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
</IfModule>
</VirtualHost>
Personalizar Apache Logs para Virtual Host
Como en todo servidor web, es indispensable contar con los registros de logs de nustro sitio web para rastrear cualquier cosa que necesitemos.
Quiero destacar que en ejemplo anterior hago uso de la variable ${APACHE_LOG_DIR} y que esta puede dar un error al momento de inicializar el servicio de apache puesto que no está definida en el archivo de configuración global. Si tienes este error, puede definir esta variable en el archivo httpd.conf o sustituir la variable por la ruta donde quieras que se guarde este log.
Log de errores de Apache2
La siguiente linea determina el lugar donde se van a registrar todos los errores de apache, principalmente los errores de PHP. Este es el primer lugar que tienes que revisar si tu sitio genera algún error al momento de su visualización o cuando la página web no funciona correctamente.
ErrorLog ${APACHE_LOG_DIR}/error_midominio.com.log
Log de accesos de Apache2
La siguiente linea determina el lugar donde se van a registrar todos los accesos a recursos o archivos de apache. Cada linea de este archivo representa una petición al servidor y algunos datos que registra son: fecha, hora, IP, recurso consutado, referencia, agente del navegador, código HTTP, etc.
Cuando una persona ingresa a ua página web, el primer recurso que se descarga es lo que genere el archivo php que corresponde a la peticion (URL). El navegador revisa el HTML del archivo que descargó e identifica todos los archivos que necesita para contruir la página web y se vea como fue diseñada. Esto significa que el navegador va a realizar una serie de peticiones adicionales a la original para descargar cada una de las imágenes, cada archivo CSS y cada archivo JS. También puede llegar a descargar archivos de fuentes o tipos de letra.
CustomLog ${APACHE_LOG_DIR}/access_midominio.com.log combined
El uso que se le dá a este archivo es muy variado y va desde lo más simple a lo más compicado. Te mensiono algunas cosas que se pueden hacer analizando estos registros.
- Detectar enlaces rotos. Cuando usuario visita nuestra página y está naegando en el sitio, puede llegar a darse el caso de que el visitante haga clic en un enlace roto y le va a mostrar un error 404. Ese error 404 se va a registrar en el log de accesos y por medio de éste podemos identificar de donde venía ese visitante para corregir el enlace roto.
- Páginas más visitadas. Puedes realizar un análisis de este archvo para contabilizar las visitas a cada página web y sacar una estadística de las páginas más vistas.
- Enlaces de sitios web externos. En este archivo puedes visualizar si algún sitio te ha enlazado o si algún contenido de tu sitio fue publicado en alguna red social.
- Detectar visitas de indeadores o spiders. Google Bots a igual que otros spiders, rastrean todo indernet visitando las páginas de cada sitio para poder indexar tu contenido y mostrarlos en sus buscadores.
- Detectar crawlers. Esto no siempre es un problema, pero si una persona rastrea todo tu sitio con un crawler y si tu sitio es muy grande, puede hacer que tu sitio se deje de ver (tumbar el sitio) especialmente si tu sitio está en un hosting compartido o no tiene muchos recursos de procesamiento y/o memoria. Para corregir este problema puedes bloquear la IP del crawler en el firewall o bloquear las peticiones desde el archivo de configuración del virtual host.