Una funzionalità utilissima e di facile configurazione che mette a disposizione Apache HTTP Server è la pratica del virtual host ovvero la possibilità di ospitare più siti web sulla stessa istanza di servizio httpd. La comunità offre un numero impressionante di moduli che permettono di estendere le funzionalità core di Apache. In questo articolo mostrerò come utilizzare l’estensione proxy_ajp_module per configurare più siti web sullo stesso server Apache sfruttando la direttiva “VirtualHost“.
Lo scenario che prenderò in esame è rappresentato dalla seguente figura.
Utilizziamo un ambiente totalmente virtualizzato in cui sono in esecuzione 3 macchine virtuali che montano un sistema operativo Linux CentOS 6.4 (dal sito ufficiale potete scaricare una versione minimal dell’ottimo sistema operativo).
Configurazione Apache Web Server – IP: 10.10.1.50
Installare Apache Web Server e verificare che il modulo proxy_ajp sia abilitato (di solito lo è di default sulla versione 2 di Apache).
$ yum install httpd .... .... $ httpd -M | grep proxy proxy_module (shared) proxy_balancer_module (shared) proxy_ftp_module (shared) proxy_http_module (shared) proxy_ajp_module (shared) proxy_connect_module (shared)
Configuriamo il puntamento ajp ai 2 siti. Le applicazioni web saranno di fatto in esecuzione sui 2 Tomcat Server. Possiamo quindi creare un file di configurazione ad-hoc come questo:
$ vi /etc/init.d/conf.d/virtualhosts.config NameVirtualHost *:80 <VirtualHost *:80> ServerName site1.mydomain.com ProxyPass /my_app1 ajp://10.10.1.100:8009/my_app1 ProxyPassReverse /my_app1 ajp://10.10.1.100:8009/my_app1 RedirectMatch ^/$ http://site1.mydomain.com/my_app1 </VirtualHost> <VirtualHost *:80> ServerName site2.mydomain.com ProxyPass /my_app2 ajp://10.10.1.200:8009/my_app2 ProxyPassReverse /my_app2 ajp://10.10.1.200:8009/my_app2 RedirectMatch ^/$ http://site2.mydomain.com/my_app2 </VirtualHost>
Ho usato un RedirectMatch in modo che Apache effettui un redirect di default dalla url http://site1.mydomain.com alla url http://site1.mydomain.com/my_app1. Fatto questo possiamo procedere con la configurazione dei 2 Tomcat Server.
Tomcat Application Server -IP:10.10.1.100
Tomcat Application Server -IP:10.10.1.200
Se è stata fatta un’installazione tipica di Tomcat sulle 2 macchine, il connettore ajp dovrebbe essere gia configurato. In caso contrarioè sufficiente assicurarsi che nel file server.xml, la riga seguente non sia commentata:
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Effettuare un riavvio su tutte e tre le macchine, sia del demone httpd che dei due tomcat. Per impostare i dns associati ai 2 siti si può usare il file /etc/hosts sia del client sia del server Apache. Ecco un’esempio:
$ vi /etc/hosts 10.10.1.50 site1.mydomain.com site2.mydomain.com