Apache - Como crear host virtuales para tener varias web almacenadas???

Iniciado por alzehimer_cerebral, 25 Noviembre 2010, 01:17 AM

0 Miembros y 1 Visitante están viendo este tema.

alzehimer_cerebral

Hola a todos, me encuentro configurando un servidor Apache en Ubuntu 10.04 con el objetivo de labergar varias paginas web, os voy a exponer lo que quiero conseguir para ver si alguien me puede guiar en dicho proceso..

Imaginemos que he comprado 2 dominios: www.megustaelhacker.net y www,vivaelhacker.net.  En ambas empresas de hosting redirecciono los dominios a la IP publica de mi servidor Apache.  Me gustaria que dependiendo de que dominio provenga la peticion al servidor web pues que se cargara un host virtual en concreto.

Segun lo que he leido en la pagina de Apache (http://httpd.apache.org/docs/1.3/dns-caveats.html) y en (http://httpd.apache.org/docs/1.3/vhosts/ip-based.html), he optado por la opcion de tener solo un demonio Apache con varios hosts virtuales, los hosts virtuales serian algo como:

<VirtualHost www.megustaelhacker.net>
   ServerAdmin webmaster@mail.smallco.com
   DocumentRoot /groups/smallco/www
   ServerName www.megustaelhacker.net
   ErrorLog /groups/smallco/logs/error_log
   TransferLog /groups/smallco/logs/access_log
   </VirtualHost>

   <VirtualHost www.vivaelhacker.net>
   ServerAdmin webmaster@mail.baygroup.org
   DocumentRoot /groups/baygroup/www
   ServerName www.vivaelhacker.net
   ErrorLog /groups/baygroup/logs/error_log
   TransferLog /groups/baygroup/logs/access_log
   </VirtualHost>

1.-Si opto por este tipo de hosts virtuales, no tengo claro como se sabria que host virtual cargar...  Ya que supongo que url seria http://IP_PUBLICA...  Hay alguna forma de saber y diferenciar que host virtual cargar???

Tambien he leido que es conveniente poner la IP en el host virtual:

<VirtualHost 10.0.0.1>
   ServerName www.megustaelhacker.net
   ServerAdmin webgirl@abc.dom
   DocumentRoot /www/megustaelhacker.net
   </VirtualHost>

<VirtualHost 10.0.0.2>
   ServerName www.vivaelhacker.net
   ServerAdmin webgirl@abc.dom
   DocumentRoot /www/vivaelhacker.net
   </VirtualHost>

2. Si optase por este modo de hosts virtuales, supongo que tendria que crear interfaces de red virtuales una para 10.0.0.1 y otra para 10.0.0.2...  Tampoco llego a entender como a partir del trafico de entrada se determina cual virtualhost cargar??

Bueno haber si alguien me puede indicar cual de los dos metodos es mas conveniente para mis propositos??  Una vez decidido el metodo la cuestion seria saber si debo tener un servidor DNS o si con el /etc/hosts seria suficiente??  La peticion que recibe mi servidor Apache lleva el ServerName explicito??

Lo siento por formular tantas preguntas. He intentado ser lo mas claro posible.  Cualquier ayuda basada en vuestra experiencia es bienvenida.

Gracias de antemano.

Salu2

alzehimer_cerebral  :P

Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com

Nakp

<virtualhost * > solo aplica para ip's por las cuales se accesa al host, en servername especificas el nombre asociado a la ruta

si defines una ip especifica solo se accesara al host si esa ip corresponde al server que aloja el sitio

en todo caso puedes usar <virtualhostname> si deseas agregarle tambien en una etiqueta el hostname

como se carga? pues se accesa por el nombre de dominio (previamente apuntado a tu servidor) y apache asocia la peticion del dominio con los vhosts antes definidos

para que comprendas mejor define tus vhosts y modifica el archivo de hosts (/etc/hosts) para que todos los dominios de tu vhost apunten a 127.0.0.1 (localhost) y veras como asocia cada uno dependiendo del servername por el que accesa xD

disculpa si queda un poco confuso pero tengo sueño x'D

nota: mover a desarrollo web :D
Ojo por ojo, y el mundo acabará ciego.

alzehimer_cerebral

Citaren todo caso puedes usar <virtualhostname> si deseas agregarle tambien en una etiqueta el hostname

Supongo que te referiras a la directiva NameVirtualHost.  :P

Ya lo he probado en local y todo funciona a la perfeccion con NameServer en los virtualhost y añadiendo el NameServer a /Etc/hosts y que apunte a 127.0.0.1...

El problema es que mi dominio www.megustaelhacker.net lo redirigo mediante una redireccion http a http://IP_PUBLICA_SERVER.  Por lo tanto si pongo en el navegador www.megustaelhacker.net esta url pasa a ser http://IP_PUBLICA_SERVER...

Entonces la peticion que llega al servidor apache no se puede resolver ya que es una IP en vez de una URL con el nombre del dominio...  Me entiendes ahora???

Salu2.

alzehimer_Cerebral
Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com

el-brujo

#3
Justamente has puesto los dos tipos que hay de virtualhosts y sólo tienes que usar uno.

Hay dos tipos de VirtualHosts, ip-based y name-based.

En tu caso si sólo tienes una ip, pues deberías usar el name-based (basado en el nombre).

El primer ejemplo es named-based

<VirtualHost www.megustaelhacker.net>

Y el segundo ejemplo es basado en ip.

<VirtualHost 10.0.0.1>

Los dos dominios deben apuntar a la la misma ip y el servidor web ya sabrá cuál mostrar, no analiza el tráfico ni nada de eso, simplemente cuando escribas www.megustaelhacker.net te llevará al documentRoot (httpdocs) de /groups/smallco/www.

Citar

Los vhosts pueden estar basados en nombre (based-name) o en ip (ip-based).

Me explico, si tu máquina tiene una sola ip, pues deberas hacer vhosts basados en nombre, y si tienes varias ips pues puedes elegir, yo solo se hacerlo basado en nombre, ya que sólo tengo una ip:

Por ejemplo:

Tenemos el apache y queremos alojar nuestra web y la de un amigo:

El amigo compra el dominio pepe.com y apunta las dns a nuestra maquina.

Nosotros tenemos que decirle a nuestra máquina esto:

<VirtualHost *>
ServerAdmin amigo@pepe.com
DocumentRoot /web/amigo_pepe/
ServerName pepe.com
ErrorLog logs/web_amigo_pepe_errpr
CustomLog logs/web_amigo_pepe_log common
</VirtualHost>

Ejemplo real de un vhost based-name (basado en nombre) del dominio elhacker.net, totalmente completo:

#le decimos listen y la ip de nuestra maquina y el puerto (normalmente 80)

Listen *:80

#recuerda que si sales por un router deberás poner Listen 192.168.0.3 , o sea la ip local, ya que sinó al arrancar el apache dará el error "could not bind address port"

NameVirtualHost *:80


#este es el vhost por defecto. Aunque está basado en nombre, este vhost como es por defecto, también podemos acceder directamente por la ip.

<VirtualHost *:80>
DocumentRoot /usr/local/apache/htdocs/alex
ServerName www.elhacker.info
ServerAlias elhacker.info
</VirtualHost>

#segundo vhost basado en en el nombre (dominio) www.elhacker.net y elhacker.net

<VirtualHost *:80>
ServerAdmin alex@elhacker.net
DocumentRoot /usr/local/apache/htdocs/elhackernet
ServerName www.elhacker.net
ServerAlias elhacker.net
</VirtualHost>

Asi en nuestro ordenador tendremos nuestra web y la de nuestro amigo, y las dos estaran en la misma IP y en el mismo servidor web. En este ejemplo solo hay 2 dominios, pero igual que hay 2 podriamos poner 200.

Fuente:

http://foro.elhacker.net/tutoriales_documentacion/instalar_apache_php_mysql_perl_en_windows_y_linux_configuracion_avanzada-t251.0.html

Nakp

he ahi el problema... Haces una redireccion dominio->ip en vez de apuntar por dns
Ojo por ojo, y el mundo acabará ciego.

alzehimer_cerebral

Efectivamente Nakp era problema de la redireccion.  He entrado a la configuracion del dominio y lo que hecho es añadir al servidor DNS de la empresa que proporciona el dominio la IP del servidor en cual se encuentra la pagina.

Gracias a todos por los aportes, me han sido de gran ayuda.

Salu2

Tema zanjado.
Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com

merck

Hola a todos¡¡ :D
He leido por el foro sobre el alojamiento d diferentes web  mediante apache2(ubuntu).
De hecho he logrado visualizarlas.Os expongo mi problema con un ejemplo:
Tengo una pagina  almacenada en un directorio  www.ubuntuelhacker.net, el directorio lo llamo ubuntu
En otra pagina lo mismo , la pagina almacendada es windowselhacker.net en el directorio  windows.
Para poder visualizar cada una de ellas tengo que pasar por el directorio obligado, es decir :
-ubuntu/www.ubuntuelhacker.net
Ya que si no  me sale un error de pagina no encontrada.

:rolleyes:He he hecho varias pruebas con el archivo etc/apache2/default , perono le doy con el clavo.

Saludos