MP08 - UF1: Servidors web i de transferència de fitxers
Apache i Nginx - Hosting virtual (i)
Podem configurar el nostre servidor web per a contenir més d'un site, és el que anomenem hosting virtual. L'allotjament virtual es pot configurar segons tres tipus de dades diferents:
-
Allotjament virtual basat en adreces IP
-
El servidor tindrà una adreça IP diferent per cada configuració d'allotjament web virtual.
-
Això implica que el servidor ha de tenir N IP diferents configurades (1 per cada allotjament web virtual).
-
Sota IPv4 i l'escassetat d'IP que hi ha actualment és un model molt poc freqüent.
-
Implica una configuració complexa en l'àmbit de paràmetres de xarxa o tenir una targeta de xarxa per cada IP.
-
-
Allotjament virtual basat en noms
-
El servidor allotja diferents noms de domini o subdomini a la mateixa adreça IP.
-
Apache a partir del nom de domini aplica un fitxer de configuració o un altre.
-
Aquest tipus d'allotjament funciona a partir de HTTP/1.1.
-
Això és perquè s'envia la capçalera Host que indica el nom de domini.
-
Actualment és la forma de configuració més utilitzada.
-
Simplifica i facilita l'administració del servei.
-
-
Allotjament virtual basat en ports
-
Cada site funciona a una IP i/o domini:port diferent.
-
Consisteix a combinar els dos tipus anteriors amb l'ús de diferents ports.
-
Cal destacar que tal com hem vist en aquest últim cas, tots els tipus poden funcionar en comú al mateix servidor web.
-
Trobaràs més informació a...
Exemple pràctic
Aplicarem la configuració d'allotjament virtual per noms.
Crearem dos Virtualhosts que serviran les peticions rebudes al domini daw1.cat i daw2.cat.
A la vida real, serien noms de DNS vàlids, per fer les proves, caldrà que editem el fitxer /etc/hosts
(en Linux) o %WINDIR%\System32\Drivers\etc\hosts
(en Windows) per tal que apuntin a la IP del nostre servidor (ipDelServidor
).
Què has dit?
Sí, com que el nostre servidor DNS no coneix cap d'aquests dos dominis i no sap traduir-los a cap IP, o potser sí i llavors anirem on no volem, cal aconseguir que el nostre ordinador sàpiga que quan ens referim a daw1.cat o a daw2.cat en realitat el que volem és accedir a l'ordinador d'IP ipDelServidor.
Cada site ha de tenir la seva pròpia estructura de fitxers.
Un respondrà amb un fitxer HTML i l'altre amb un fitxer PHP.
A partir d'aquí podem anar jugant amb les configuracions, afegint logs, canviant ports, noves directives, etc.
Fitxers i directoris
En Apache la configuració dels sites s'emmagatzema al diretori /etc/apache2/sites-available
en un fitxer que identificarà el site amb el nom i acabarà en .conf
. Per exemple podem crear el fitxer /etc/apache2/sites-available/daw1.cat.conf
amb el següent contingut:
<VirtualHost *:80>
ServerName daw1.cat
DocumentRoot /var/www/daw1.cat
</VirtualHost>
Fixeu-vos que el nom de domini és daw1.cat
sense www
.
Una vegada creat el fitxer cal habilitar el site. Ho fem amb la comanda a2ensite <site>
de la següent forma:
a2ensite daw1.cat
Ens avisa que hem de reiniciar/recarregar el servidor web
Enabling site daw1.cat.
To activate the new configuration, you need to run:
service apache2 reload
i el recarreguem...
systemctl reload apache2
En nginx la configuració dels sites s'emmagatzema al diretori /etc/nginx/sites-available
en un fitxer que identificarà el site amb el nom. Per exemple podem crear el fitxer /etc/nginx/sites-available/daw1.cat
amb el següent contingut:
server {
server_name daw1.cat
location / {
root /var/www/daw1.cat
}
}
o amb més línies
server {
listen 80;
server_name daw1.cat;
root /var/www/daw1.cat;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Fixeu-vos que el nom de domini és daw1.cat
sense www
.
Una vegada creat el fitxer cal habilitar el site. Amb nginx no hi ha cap comanda especal i cal fer un enllaç sibmòlic, ln -s
:
ln -s /etc/nginx/sites-available/daw1.cat /etc/nginx/sites-enabled/daw1.cat
Ara cal reiniciar/recarregar el servidor web
systemctl restart nginx
Com que hem indicat que el nou site té els fitxers a /var/www/daw1.cat
cal:
-
crear el directori
mkdir /var/www/daw1.cat
-
posar-hi un fitxer
index.html
-
ara ja podem accedir a http://daw1.cat/
pots comprovar el contingut dels directoris site
, tant l'available
com l'enabled
isard@ubuntu:~$ ls -l /etc/apache2/sites-*
/etc/apache2/sites-available:
total 16
-rw-r--r-- 1 root root 1332 Mmm DD HH:MI:SS 000-default.conf
-rw-r--r-- 1 root root 94 Mmm DD HH:MI:SS daw1.conf
-rw-r--r-- 1 root root 6338 Mmm DD HH:MI:SS default-ssl.conf
/etc/apache2/sites-enabled:
total 0
lrwxrwxrwx 1 root root 35 Mmm DD HH:MI:SS 000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx 1 root root 28 Mmm DD HH:MI:SS daw1.conf -> ../sites-available/daw1.conf
isard@nginx-server:~$ ls -l /etc/nginx/sites-*
/etc/nginx/sites-available:
total 12
-rw-r--r-- 1 root root 78 Mmm DD HH:MI:SS daw1.cat
-rw-r--r-- 1 root root 3024 Mmm DD HH:MI:SS default
/etc/nginx/sites-enabled:
total 0
lrwxrwxrwx 1 root root 35 Mmm DD HH:MI:SS daw1.cat -> /etc/nginx/sites-available/daw1.cat
lrwxrwxrwx 1 root root 34 Mmm DD HH:MI:SS default -> /etc/nginx/sites-available/default
Altres paràmetres amb què jugar
Podem configurar altres paràmetres per tal que el nostre site virtual es comporti de forma diferent als altres sites. Els més habituals seran els de registres log:
-
ErrorLog
: solem crear fitxers diferents per a cada site. -
CustomLog
: solem crear fitxers diferents per a cada site.
Per exemple podríem afegir-hi
ErrorLog ${APACHE_LOG_DIR}/error.daw1.cat.log
CustomLog ${APACHE_LOG_DIR}/access.daw1.cat.log combined
i reiniciem
Recorda que cada vegada que modifiquis algun paràmetre de configuració de l'Apache cal reiniciar o recarregar el servei. systemctl reload apache2
-
error_log
: solem crear fitxers diferents per a cada site. -
access_log
: solem crear fitxers diferents per a cada site.
Per exemple podríem afegir-hi
error_log /var/log/nginx/error.daw1.cat.log;
access_log /var/log/nginx/access.daw1.cat.log combined;
i reiniciem
Recorda que cada vegada que modifiquis algun paràmere de configuració de l'nginx cal reiniciar o recarregar el servei. systemctl restart nginx