Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Apache 2.4
  3. Configuration avancée
Extrait - Apache 2.4 Installation et configuration
Extraits du livre
Apache 2.4 Installation et configuration
1 avis
Revenir à la page d'achat du livre

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 :...