Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

Configuración de Virtual Host en Apache (Windows)

En este post veremos como configurar el virtual de Apache en Windows. Muchas veces instalamos xampp, mamp o wamp en windows, pero vemos que para entrar a nuestros proyectos tenemos que recorrer ejemplo localhost/test/ o localhost/examples/project1 o algo por el estilo no seria mas combeniente ir a un dominio local por ejemplo miproyecto1.local, miproyecto2.local etc.

Como puede intuir, realizar virtual host nos permite tener múltiples sitios web en una misma máquina física.

En este caso veremos como hacerlo en nuestro ámbito local, pero tenga en cuenta que puede utilizarlos para tener varios sitios en un mismo host VPS. Además, tenga en cuenta que nosotros no estamos alojando nuestro dominio. Si desea saber como alojar dominios haga una busqueda sobre Bind9.

El archivo hosts de Windows

El archivo hosts es un archivo de texto sin extensión que se encuentra en el sistema operativo Windows y se utiliza para mapear nombres de dominio a direcciones IP. Es una forma simple y manual de establecer una asociación entre un nombre de dominio y una dirección IP específica en un nivel local.

IMPORTANTE: El archivo hosts necesita permisos de administrador para ser modificado.

Algo que puede ayudar en este sentido es abrir el archivo hosts con Visual Studio Code, ya que este nos preguntara al guardar si queremos realizar los cambios como administrador.

Veamos donde se encuentra ubicado nuestro archivo hosts y que data posee dentro.

Su ubicación normalmente es C:\Windows\System32\drivers\etc\hosts

Veamos su contenido:

C:\Windows\System32\drivers\etc\hosts
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

Vea que el archivo host normalmente es un archivo en el cual todas sus líneas están comentadas y en algunas de sus líneas nos dice como usarlo, además de ello tiene 2 líneas que generalmente son las más usadas y serán las que utilizaremos.

# 127.0.0.1 localhost

#::1 localhost

127.0.0.1 es la ipv4 de localhost y ::1 es la ipv6 de localhost , La dirección IP local 127.0.0.1, también conocida como dirección IP de loopback o «localhost», es una dirección especial que se utiliza para acceder al propio equipo desde sí mismo. En otras palabras, es una forma de referirse a la propia máquina sin depender de una conexión de red externa.

Yo en mi computadora me encuentro usando XAMPP así que des comentaré la de ipV4, tenga en cuenta que al hacer esto le estamos diciendo que el dominio localhost está vinculado con la máquina donde estamos.

Si escribimos lo siguiente en hosts:

hosts
127.0.0.1 localhost
127.0.0.1 project1.local
127.0.0.1 project2.local

Los 3 dominios estarán vinculados a 127.0.0.1, tenga en claro que esto es para nuestra máquina. Por ejemplo, si yo hago la siguiente línea:

hosts
127.0.0.1 google.com

¿Qué es lo que pasara aquí?

Pues no dará como que no encontró la página, ya que le estamos diciendo que google.com está en nuestra máquina.

Y acá viene un gran pero gran signo de alerta.

ALERTA- MUY IMPORTANTE: Mi recomendación es nunca entrar a un sitio web que necesite login, como puede ser Facebook, Instagram, banco, etc; en un PC que no sea suyo.

¿Por qué? Vea que en el ejemplo yo podría falsificar la página de Google para la máquina donde me encuentro y esto podrá terminar en un caso de phishing.

Que yo no tenga creada la página todavía es lo que nos da ese estado de pensar que es seguro y que no por más que haga esto alguien no nos podría timar, este es totalmente un sentimiento falso de seguridad.

En las siguientes secciones veremos cómo hacer esto, ya que nosotros queremos presentar a nuestros contratantes una dirección local.

Activando el virtual Host en nuestro PC

Recuerde que aquí estamos hablando de apache, yo en mi PC estoy usando XAMPP que instala apache, MySQL y PHP con ese paquete solo.

Para activar nuestro virtual host tendremos que entrar, a la carpeta donde está nuestro apache:

En XAMPP esto es relativamente fácil.

Una vez en la carpeta de apache tengo que ir a config y luego a httpd.conf

Dentro del archivo httpd.conf buscaremos estas líneas.

# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

Y quitaremos el comentario(#) delante de Include conf/extra/httpd-vhosts.conf

Guardamos y listo.

Ahora tendríamos que ir a httpd-vhosts.conf que está donde nos está indicando el include: dentro de Apache conf/extra/httpd-vhosts.conf

Dentro de este archivo ya podríamos definir nuestro virtual host, pero veamos primero lo que posee el archivo dentro.

httpd-vhosts.conf
# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# 
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
##NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ##ServerName or ##ServerAlias in any  block.
#
##
    ##ServerAdmin webmaster@dummy-host.example.com
    ##DocumentRoot "D:/xampp/htdocs/dummy-host.example.com"
    ##ServerName dummy-host.example.com
    ##ServerAlias www.dummy-host.example.com
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
##

##
    ##ServerAdmin webmaster@dummy-host2.example.com
    ##DocumentRoot "D:/xampp/htdocs/dummy-host2.example.com"
    ##ServerName dummy-host2.example.com
    ##ErrorLog "logs/dummy-host2.example.com-error.log"
    ##CustomLog "logs/dummy-host2.example.com-access.log" common
##

Como podemos ver dentro de nuestro httpd-vhosts.conf tenemos un montón de información que podemos usar: Ejemplos, y link directo a la documentación http://httpd.apache.org/docs/2.4/vhosts/

Veamos como hacer varios virtual hosts, primero que nada necesitaré mi localhost y algún otro virtual host y haremos lo que dijimos de google.com simplificado.

Supongamos que creamos temas de wordpress y tenemos algún ejercicio por ahí.

httpd-vhosts.conf
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot D:\xampp\htdocs
<Directory "D:\xampp\htdocs">
</Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName examplelang.local
    DocumentRoot D:\xampp\htdocs\Exercise_langChange
<Directory "D:\xampp\htdocs\Exercise_langChange">
</Directory>
</VirtualHost>

<VirtualHost *:80>
	ServerName wthemes.local
	DocumentRoot D:\xampp\htdocs\wordpress_themes
	<Directory "D:\xampp\htdocs\wordpress_themes">
	</Directory>
</VirtualHost>

Especificar el directorio es muy importante, no lo olvide, si no especifico el directorio es probable que los virtual host no funcionen con el comportamiento deseado. Estos son ejemplos de virtualhost sencillos en caso de necesitar hacer algo más elaborado, consulté la documentación

En estos casos si voy a localhost vea que la ruta es D:\xampp\htdocs en mi caso, esto dependerá de donde tengas instalado XAMPP o paquete de instalación que estés usando.

Por tanto, cuando escriba en la barra de navegación localhost se estará refiriendo a la carpeta htdocs, index.php que en el caso de XAMPP si todo está bien nos enviará a la conocida localhost/dashboard/

Si pongo en mi barra de navegación wthemes.local no va a buscar tal página en internet, estará entrando en el sitio que está en D:\xampp\htdocs\wordpress_themes probablemente este sitio si exista en internet, pero yo en mi máquina le dije que esa url era 127.0.0.1 mi loopback.

A causa de esto entrará en este archivo y le dirá que wthemes.local está en D:\xampp\htdocs\wordpress_themes y veremos el sitio alojado en ese lugar.

Lo mismo pasaría si yo tengo un google.com en host apuntando a mi localhost este va a apuntar a la carpeta que tengo especificada en mi archivo httpd-vhosts.conf

Es por estas razones que se tiende a utilizar algún programa para frizar la máquina en un estado anterior en algunos centros de enseñanza. Estos pueden ser programas como DEEP FREEZE, Clean Slate,SmartShield,Dafturn Ofris, etc.

Realizemos el falso google.com solo para cerrar la idea: Crearé una carpeta fakegoogle con un archivo index.html en mi carpeta htdocs, luego añadire google.com en hosts, y por último haré el virtual host.

[fakegoogle]index.html
<h1>Fake Google</h1>
hosts
127.0.0.1 google.com
httpd-vhosts.conf
<VirtualHost *:80>
	ServerName google.com
	DocumentRoot D:\xampp\htdocs\fakegoogle
	<Directory "D:\xampp\htdocs\fakegoogle">
	</Directory>
</VirtualHost>

Veamos lo que tenemos aquí corriendo google.com en un navegador:

Como puede ver Edge nos permite que ocurra este, en Chrome, sin embargo, este nos protege contra esto y nos muestra la página verdadera. Esto no quiere decir que nos proteja de otros tipos de páginas falsas, como dije ya antes utilicé su propio PC para entrar en lugares que necesitan login.

Category: otros
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category