Configuration avancée
Modules et fonctionnalités avancés
1. mod_setenvif
LoadModule setenvif_module modules/mod_setenvif.so
Ce module permet de définir des variables d’environnement en fonction de spécificités de requêtes et d’expressions rationnelles.
a. BrowserMatch
Directive permettant de définir des variables d’environnement en fonction du contenu de l’en-tête HTTP User-Agent.
Syntaxe : BrowserMatch regex [!]env-variable[=valeur] [[!]env-variable[=valeur]] ...
Contexte : configuration du serveur, serveur virtuel, répertoire, .htaccess.
AllowOverride : FileInfo
BrowserMatch "HTTrack" bad_trafic
BrowserMatch "Stumbler" bad_trafic
BrowserMatch "curl" ok_Curl
<Location /only-curl>
<RequireAny>
Require env !bad_trafic
<Require env ok_Curl
</RequireAny>
</Location>
Dans cet exemple, seul le User-Agent curl/7.35.0 est autorisé à appeler l’URL http://www.eni.labs/only-curl/.
marty@vm-compilation-eni:~$ curl -I --user-agent "HTTrack"
http://www.eni.labs/only-curl/
HTTP/1.1 403 Forbidden
Date: Wed, 23 Jul 2014 21:27:27 GMT
Server: Apache/2.4
Content-Type: text/html; charset=iso-8859-1
marty@vm-compilation-eni:~$ curl -I --user-agent "Stumbler"
http://www.eni.labs/only-curl/
HTTP/1.1 403 Forbidden
Date: Wed, 23 Jul 2014 21:27:45 GMT
Server: Apache/2.4
Content-Type: text/html; charset=iso-8859-1
marty@vm-compilation-eni:~$ curl -I --user-agent "curl/7.35.0"
http://www.eni.labs/only-curl/
HTTP/1.1 200 OK
Date: Wed, 23 Jul 2014 21:27:14 GMT
Server: Apache/2.4
Vary: Host
Last-Modified: Wed, 23 Jul 2014 10:00:47 GMT
Accept-Ranges: bytes
Content-Length: 809
Content-Type: text/html; charset=utf-8
Content-Language: fr
b. BrowserMatchNoCase
Directive permettant de définir des variables d’environnement en fonction du contenu de l’en-tête HTTP User-Agent sans tenir compte de la casse.
Syntaxe : BrowserMatchNoCase regex [!]env-variable[=valeur] [[!]env-variable[=valeur]] ...
Contexte : configuration du serveur, serveur virtuel, répertoire, .htaccess.
AllowOverride...
Installation de modules supplémentaires
Il existe de nombreux modules supplémentaires offrant de nombreuses fonctionnalités souvent primordiales pour des projets web.
Ces modules sont :
-
soit des modules créés et maintenus par la Fondation Apache, mais non activés par défaut lors de l’installation et/ou de la compilation.
-
soit des modules créés et maintenus par des entreprises ou communautés tierces.
1. mod_session_crypto
LoadModule session_crypto_module modules/mod_session_crypto.so
Ce module est un sous-module de mod_session apportant le chiffrement des données de session stockées sur le serveur ou dans un cookie HTTP côté navigateur.
Il peut être particulièrement utile pour l’utilisation du module mod_auth_form vu précédemment, afin de chiffrer les données échangées.
a. SessionCryptoCipher
Directive permettant d’indiquer l’algorithme à utiliser pour le chiffrement de la session.
Syntaxe : SessionCryptoCipher algorithme
Défaut : aes256
Contexte : configuration du serveur, serveur virtuel, répertoire, .htaccess.
La liste des algorithmes sont :
-
3des192
-
aes128
-
aes192
-
aes256
b. SessionCryptoPassphrase
Directive permettant de définir la clé à utiliser pour chiffrer la session.
Syntaxe : SessionCryptoPassphrase secret [ secret ... ]
Défaut : none
Contexte : configuration du serveur, serveur virtuel, répertoire, .htaccess.
Session On
SessionCookieName ENI path=/private_access
SessionCryptoPassphrase P@$$phr@s3ENI
c. SessionCryptoPassphraseFile
Directive permettant d’indiquer le fichier contenant les clés utilisées pour chiffrer la session.
Syntaxe : SessionCryptoPassphraseFile nom-fichier
Défaut : none
Contexte : configuration du serveur, serveur virtuel, répertoire.
d. Installation
Ce module étant encore en statut expérimental, il n’est pas disponible dans la liste des modules compilés lors de l’installation.
En effet, si vous essayez de charger ce dernier en rajoutant la directive LoadModule ci-dessus, vous obtiendrez le message suivant lors d’un apachectl configtest :
marty@vm-compilation-eni:~$ sudo apachectl configtest
httpd: Syntax error on line 11 of /etc/apache2.4/httpd.conf:
Syntax error on line 26 of /etc/apache2.4/conf/modules.conf:...
Cas concret : hébergement de plusieurs sites web sur un même serveur à partir de modèles de configuration
Depuis maintenant plusieurs années, les configurations matérielles des serveurs permettent de servir un grand nombre de connexions et d’héberger sur un même environnement plusieurs sites Internet.
Comme nous avons pu le voir dans le chapitre Configuration de base d’Apache, la création d’un environnement pour un site Internet revient à créer un VirtualHost permettant de déterminer entre autres :
-
la localisation des fichiers de l’application en fonction du ou des noms de domaine appelés.
-
l’emplacement des fichiers de logs.
-
des configurations spécifiques à l’environnement, telles que les droits d’accès.
Héberger plusieurs sites Internet sur un même serveur revient donc à créer un fichier spécifique pour chaque application, par exemple :
Site Internet du collaborateur Stéphane :
<VirtualHost *>
ServerAdmin stephane@eni.labs
ServerName stephane.eni.labs
ServerAlias www.stephane.eni.labs
DocumentRoot /opt/stephane/www
<Directory /opt/stephane/www>
Require all granted
</Directory>
</VirtualHost>
Site Internet du collaborateur Anthony :...