Reciclando Direcciones IP con Apache
ArticleCategory: [Choose a category for your article]
System Administration
AuthorImage:[Here we need a little image form you]
TranslationInfo:[Author and translation history]
original in en Atif Ghaffar
en to es José Rodríguez Ruibal
AboutTheAuthor:[A small biography about the author]
Vivo y trabajo en Suiza como webmaster/administrador unix.
Entre mis pasiones se incluyen Linux, unix, Perl, Apache y el software GPL.
Más sobre mí en mi homepage
Abstract:[Here you write a little summary]
Este artículo demuestra cómo servir múltiples servidores web utilizando la misma
dirección ip con Apache bajo Unix/Linux.
El artículo asume que el lector tiene conocimientos de Apache, de DNS y de Unix.
La audiencia objetivo de este artículo son los ISP, administradores de sistemas o cualquiera que
quiera leerlo y aprender.
ArticleIllustration:[This is the title picture for your article]
ArticleBody:[The article body]
Por qué deberíamos reciclar direcciones IP ?
El reciclado de las direcciones ip es útil por diversos motivos.
- nos podemos quedar fácilmente sin direcciones ip
- puede ser que tan solo tengamos una direccion ip (como puede ser mi caso)
- los administradores de sistemas pierden mucho tiempo añadiendo interfaces al servidor para utilizar múltiples direcciones ip.
Cómo reciclar las direcciones ip?
Utilizando Apache, resulta muy simple servir múltiples dominios con una sola dirección ip.
A lo largo de este artículo asumiremos que la dirección ip es la 192.168.1.1 y que el nombre del host
es hometranet.home.
Simplemente, añadimos una línea como esta a nuestro fichero httpd.conf
NameVirtualHost 192.168.1.1:80
A continuación añadimos tres servidores virtuales utilizando la misma dirección ip
#Host para ficheros unix
ServerName unix.hometranet.home
DocumentRoot /www/unix/html
ScriptAlias /cgi-bin/ /www/unix/cgi-bin/
TransferLog /www/unix/logs/access_log
ErrorLog /www/unix/logs/error_log
#Host para cosas de perl
ServerName perl.hometranet.home
DocumentRoot /www/perl/html
ScriptAlias /cgi-bin/ /www/perl/cgi-bin/
TransferLog /www/perl/logs/access_log
ErrorLog /www/perl/logs/error_log
#Host para cosas chulas de Apache
ServerName apache.hometranet.home
DocumentRoot /www/apache/html
ScriptAlias /cgi-bin/ /www/apache/cgi-bin/
TransferLog /www/apache/logs/access_log
ErrorLog /www/apache/logs/error_log
Asi que, utilizando una sola dirección hemos configurado tres servidores virtuales diferentes.
A continuación añadimos CNAMES o Registros A para esos nombres en el fichero de zona
de nuestro servidor de nombres
y no nos olvidamos de incrementar el n&uacte;mero de serie :)
por ejemplo: en mi /var/named/hometranet.home.fwd, añadiría
perl.hometranet.home. IN A 192.168.1.1
apache.hometranet.home. IN A 192.168.1.1
unix.hometranet.home. IN A 192.168.1.1
Nota importante:
si llamamos a este host con otro nombre diferente al que damos en el ficheros de configuraci&ocute;n de los virtuales,
será el primer host virtual quien responderá.
Con Apache 1.3.x el &uacte;ltimo debería haber respondido.
Por ejemplo: si este host se llama madmag, si llamamos a http://madmag.hometranet.home
tendremos la misma respuesta que si llamamos a unix.hometranet.home.
Usando wildcards, nombres de host dinámicos (dynamic hostnames)
Esta es la parte divertida. Apache permite utilizar wildcards en los nombres de los hosts.
Esto quiere decir que podemos configurar un dominio *.home.hometranet.home y todas las peticiones a los servidores
user1.home.hometranet.home, user2.home.hometranet.home, user3.home.hometranet.home,etc
responderán.
Ejemplo:
#host para usuarios
ServerName home.hometranet.home
ServerAlias *.home.hometranet.home
DocumentRoot /www/home/html
TransferLog /www/home/logs/access_log
ErrorLog /www/home/logs/error_log
y una entrada en el fichero de nombres de zona.
*.home.hometranet.home. IN A 192.168.1.1
Nota: este truco no funciona si utilizamos Microsoft DNS Server. Aparentemente, no deja usar wildcards en los nombres de host.
(Pero no lo estás usando, verdad??)
Una vez escribí un pequeño sistema que permitía que los usuarios de una red añadieran su
CV en una base de datos y, usando el truco anterior, sus CVs estaban disponibles en las direcciones
http://theirUserName.cv.developer.ch.
Aquí está un fichero un poco más
exhaustivo que he separado de mi fichero httpd.conf principal.
Este es el que tengo actualmente en mi servidor.
PAra incluir este fichero en el httpd.conf principal puedes usar la directiva Include en el httpd.conf.
Include "/etc/vhosts.conf"
Rescursos Adicionales
-
[Apache name-based Virtual Host Support]
-
http://www.apache.org/docs/vhosts/name-based.html
-
[Apache Virtual Host documentation]
-
http://www.apache.org/docs/vhosts/index.html
- [An In-Depth Discussion of Virtual Host Matching]
-
http://www.apache.org/docs/vhosts/details.html