Sottodomini con Apache

di Andrea Turso - 31 dicembre 2008

Fin dalla prima volta che ho messo su un ambiente di sviluppo in locale ho avuto la necessità di avere differenti sottodomini per ognuno dei miei progetti in fase di sviluppo. Purtroppo non sono mai riuscito a configurare Apache in modo da ottenere il risultato voluto... almeno fino ad oggi.

Il problema che ho sempre riscontrato era quello che, inserendo il mio dns nella barra degli indirizzi del browser, ottenevo la schermata di login del mio router. Pensavo fosse un problema di conflitto di porte (visto che il router utilizza un webserver micro_httpd in ascolto sulla porta 80), ma in realtà si è rivelato essere un semplice problema di NATtaggio. Per comprendere meglio ho preparato un diagramma che illustra la topologia della mia rete locale.Rete locale di 
Trashofmasters È facile notare che la rete è composta da un solo computer (host) e da un router (uno di quelli che fanno anche da modem, il nome è Dynalink RTA 230).

Il router possiede due interfacce: una pubblica ed una privata. L'interfaccia pubblica è quella a cui è associato il mio indirizzo ip (dinamico), è mediante quest'interfaccia che posso comunicare all'esterno della mia rete locale; mentre l'interfaccia privata è quella a cui il mio computer è connesso. Essendo un modello decisamente economico il router ha una sola interfaccia privata.

Quindi un pacchetto, o una richiesta, non viene catturata direttamente dalla scheda di rete (NIC) del mio pc, ma passa prima dal router, che in base a delle regole decide a quale computer della rete locale inviare il pacchetto, o se scartarlo del tutto.

Un altro problema era quello di associare il mio ip pubblico ad un dns, perché ogniqualvolta il router viene disconnesso o spento l'ip associato alla sua interfaccia pubblica cambia (perché viene assegnato da un Internet Service Provider). Fortunatamente il router ha una comoda funzionalità, che se abilitata e configurata, aggiorna l'indirizzo ip pubblico del router del dns dinamico su dyndns. Purtroppo non tutti i router hanno questa comoda caratteristica, ma esistono diverse utility per Windows e GNU/Linux che svolgono un compito simile.

Nota: dyndns offre l'opzione di mappare indirizzi del tipo: *.dominio.ext, essenzialmente senza questa opzione è impossibile fare qualcosa, quindi se il servizio di dns che utilizzate non lo supporta provate ad usare dyndns.

Okay, dopo esserci complicati la vita in assurdi concetti di Networking, torniamo al nocciolo della discussione e vediamo come configurare il nostro ambiente in modo che supporti domini di terzo livello.

Per prima cosa, se si è nelle mie stesse condizioni, è necessario modificare il file hosts per associare l'indirizzo ip privato del NIC ai differenti domini:

File hosts

Il file hosts su un sistema GNU/Linux si trova in: /etc, mentre su Windows(2000, Xp, Vista) in: %SystemRoot%\system32\drivers\etc
File:hosts

#Indirizzo    Nome Dominio
127.0.0.1     localhost
192.168.1.3   unukalhai.homelinux.org    gulp.unukalhai.homelinux.org

File di configurazione di apache

Per creare un sistema di sottodomini è necessario utilizzare la direttiva NameVirtualHost — che da una breve lettura — sembra che permetta di avere molteplici virtualhosts attivi contemporaneamente sulla stessa interfaccia di rete.
Il file di configurazione di apache, su un sistema GNU/Linux si trova solitamente in: /etc/apache2, mentre su windows in: c:\Programmi\Apache Software Foundation\Apache 2.2\conf
File:httpd.conf

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName unukalhai.homelinux.org
   DocumentRoot /home/trashofmasters/Public/VirtualHosts/main
   #Resto della configurazione del Virtualhost
</VirtualHost>
<VirtualHost *:80>
   ServerName gulp.unukalhai.homelinux.org
   DocumentRoot /home/trashofmasters/Public/VirtualHosts/Gulp/public
   #Resto della configurazione del Virtualhost
</VirtualHost>

Una volta fatto questo sarà sufficiente riavviare apache ed il gioco è fatto.

Nota: Apache tende a mostrare un messaggio come questo al momento del riavvio:
[Wed Dec 31 06:29:17 2008] [warn] NameVirtualHost *:80 has no VirtualHosts
ancora non so esattamente perché lo mostri, ma anche con questo warning le cose sembrano funzionare a meraviglia.

1 commento

1 andy andy giovedě 19 febbraio 2009, ore 13:51
avevo già provato questa soluzione, giusto per avere in locale un ambiente ben organizzato. il mio pc ha una ubuntu e volevo creare un ambiente simile anche se il pc fosse offline (da internet).
avevo configurato il file hosts e via webmin anche apache, ma sistematicamente ero colto da insuccesso.
anche se non noto molte differenze nelle configurazioni proposte da te, mi sa riproverò daccapo seguendo quest'articolo: chissà che non riesca a risolvere!!
Effettua l'accesso o registrati per inserire un commento