Apache Virtual Host documentation
La pagina è questa afferma che apache supporta il virtual host fin dalla versione 1.1 Sotto c'è la documentazione della versione 1.3 e successive.
Cluster
La parte che riguarda l'ambito cluster multiapache ecc è trattata apache-cluster
Gestione dei nomi
Apache Module mod_proxy
Apache mod_rewrite
apache2 mod_rewrite e Redirect
AJP connessione con tomcat con il protocollo ajp
apache2 modulo ajp meglio di mod proxy
Autenticazione
HTTPS
Apache2 e https, protocollo sicuro
PHP
quick ubuntu guide https://help.ubuntu.com/10.04/serverguide/php5.html
Configurazioni sintetiche già pronte all'uso
Pagina di default
Quando in un apache sono stati settati molti virtual host si può avere un dominio che corrisponde alla macchina ma senza nessun match. Per esempio se si chiama direttamente con l'indirizzo ip e nei virtual host sono definiti soltanto nomi. In questo caso viene scelto il sito dento sites-enable che viene prima in ordine alfabetico/numerico.
Gestione degli accessi in base a ip di provenienza
Nell'esempio sotto facciamo la negazione in un virtual host tramite ip e netmask
<VirtualHost *>
ServerName url.dominio.com
ProxyPass /url http://192.168.199.15/url
ProxyPassReverse /url http://192.168.199.15/url
<Location />
order deny,allow
deny from all
allow from 192.168.9.0/255.255.255.0
allow from 172.1.16.0/255.255.255.0
</Location>
</VirtualHost>
LocationMatch gestione con le espressioni regolari
In questo modo fa il controllo di autenticazioni per tutto quello che è miodominio.it/ e miodominio.it/web/
<VirtualHost *>
ServerName miodominio.it
AddDefaultCharset utf-8
Alias "/gis" "/var/www/gis/"
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /gis !
ProxyPreserveHost On
ProxyPass /Tes http://127.0.0.1:8180/Tes
ProxyPassReverse /Tes http://127.0.0.1:8180/Tes
ProxyPass /Auto http://127.0.0.1:8180/Auto
ProxyPassReverse /Auto http://127.0.0.1:8180/Auto
ProxyPass /ca http://127.0.0.1:8180/ca
ProxyPassReverse /ca http://127.0.0.1:8180/ca
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
<LocationMatch "^(/$|/web)">
AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthUserFile /usr/local/apache2/conf/htpasswd
Require user miousername
</LocationMatch>
</VirtualHost>
Far servire cose miste da proxy pass e document root
www.dominio.it/robots.txt viene servito dall'apache e non dall'application server sottostante
DocumentRoot /var/www
<VirtualHost *>
ServerName www.dominio.it
ServerAlias domnio.it
ServerAdmin sysadm@dominio.com
AddDefaultCharset utf-8
ProxyPreserveHost On
ProxyPass /robots.txt !
ProxyPass /AriannaWeb http://127.0.0.1:8081/AriannaWeb
ProxyPassReverse /AriannaWeb http://127.0.0.1:8081/AriannaWeb
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
Redirect con proxy pass quando non si ha il nome
<VirtualHost *>
ServerName 192.168.1.245
ProxyPass /arianna http://localhost:8080/arianna
ProxyPassReverse /arianna http://localhost:8080/arianna
</VirtualHost>
ServerName con wildcard
Si possono avere diversi domini di secondo livello se l'utente digita uno che non esiste si può fare con wildcard e portarlo a uno di default
<VirtualHost *:80>
ServerName *.miodomio.com
RedirectMatch ^/$ http://default.hyperborea.com/
</VirtualHost>
Oppure si può settare una pagina che dice che il dominio non esiste.
Redirect tramite html, sconsigliato per l'indicizzazione dai motori di ricerca
Non è consigliato perchè con il redirect puro i motori di ricerca modificano i loro url ma in questo modo l'utente è consapevole
cat index.html
<html>
<head>
<META HTTP-EQUIV="Refresh" Content="5; URL=http://nuovo.miodominio.it/home/">
</head>
<body>
Questa pagina verrà rediretta a http://nuovo.miodominio.it/ in 5 secondi.
<p>
Per favore aggiorna i tuoi links
</body>
</html>
cat sito
<VirtualHost *:80>
DocumentRoot /var/www/miosito
ServerName vecchio.miodominio.com
Alias /home /var/www/miosito
</VirtualHost>
Se al posto di URL=http://nuovo.miodominio.it/home/ metto URL=/home/ lui aggiunge il dominio attuale
redirect
this code proxy everything remote-name.mywebsite.com to name.mywebsite.com, so you don't need to update the apache config file every time you add a new dns record
SSLProxyEngine On
RewriteEngine On
#Initial redirect for request that does not have a URI
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_HOST} remote-([^/:]+)\.mywebsite\.com [NC]
RewriteRule ^(.*)$ https://%1.mywebsite.com/ [P,L,QSA]
#All subsequent requests
RewriteCond %{HTTP_HOST} remote-([^/:]+)\.mywebsite\.com [NC]
RewriteRule ^(.*)$ https://%1.mywebsite.com/$1 [P,L,QSA]