Configurer le serveur Apache HTTPd 2.4.3 avec httpd.conf



Pré-requis

Activer le ServerName

  • Dans la partie Main server configuration, décommenter la ligne ServerName en indiquant le nom du serveur. En général, ceci suffit :
ServerName localhost:80

Interdire l’accès au contenu des répertoires

Il arrive que le contenu du répertoire courant s’affiche lorsque le lien pointe un répertoire et non un fichier. Exemple : http://monadresse.com/chemin/ [répertoire] au lieu de http://monadresse.com/chemin/fichier.php  [fichier].

  • Pour sécuriser la navigation sur le site :
nano /usr/local/apache2/httpd.conf
  • Aller à la partie :
DocumentRoot "/usr/local/apache2/htdocs"
 <Directory "/usr/local/apache2/htdocs">
 #
 # Possible values for the Options directive are "None", "All",
 # or any combination of:
 #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
 #
 # Note that "MultiViews" must be named *explicitly* --- "Options All"
 # doesn't give it to you.
 #
 # The Options directive is both complicated and important.  Please see
 # http://httpd.apache.org/docs/2.4/mod/core.html#options
 # for more information.
 #
 Options Indexes FollowSymLinks
 #
 # AllowOverride controls what directives may be placed in .htaccess files.
 # It can be "All", "None", or any combination of the keywords:
 #   Options FileInfo AuthConfig Limit
 #
 AllowOverride None
#
 # Controls who can get stuff from this server.
 #
 Require all granted
 </Directory>
  • Effacer l’option Indexes (explications du site apache.org ci-dessous)

Indexes

Si une URL requise correspond au répertoire concerné, et si aucun DirectoryIndex (par exemple index.html) n’est défini pour ce répertoire, le module mod_autoindex va renvoyer un listing formaté du répertoire.

Le fait de supprimer l’option Indexes entraine l’apparition d’une page d’erreur 403 si aucun Directoryindex n’est demandé dans l’URL :
« Forbidden – You don’t have permission to access /mon/repertoire/ on this server. »

Afficher une page d’erreur personnalisée

  • Aller à la section suivante :
# ...
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 http://www.studios-75.fr/ma-page-404.php
ErrorDocument 403 http://www.studios-75.fr/ma-page-403.php
ErrorDocument 402 http://www.studios-75.fr/ma-page-402.php
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
# ...
  • Dé-commenter ou ajouter les lignes et les personnaliser avec la page à présenter

Compression G-zip

  • Activer le module deflate
LoadModule deflate_module modules/mod_deflate.so
  • Puis, ajouter les lignes suivantes en fin de document
<IfModule deflate_module>
        SetOutputFilter DEFLATE
        AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
#Pour les navigateurs qui ne supportent pas la compression
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

#ne pas mettre en cache si déjà présents 
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip

#pour les proxies
        Header append Vary User-Agent env=!dont-vary
</IfModule>

Mettre une date d’expiration aux types de fichiers

  • Activer le module Expires
LoadModule expires_module modules/mod_expires.so
  • Ajouter les lignes suivantes :
<IfModule expires_module>
  ExpiresActive On
  ExpiresDefault "access plus 7200 seconds"
  ExpiresByType image/jpg "access plus 2592000 seconds"
  ExpiresByType image/jpeg "access plus 2592000 seconds"
  ExpiresByType image/png "access plus 2592000 seconds"
  ExpiresByType image/gif "access plus 2592000 seconds"
  AddType image/x-icon .ico
  ExpiresByType image/ico "access plus 2592000 seconds"
  ExpiresByType image/icon "access plus 2592000 seconds"
  ExpiresByType image/x-icon "access plus 2592000 seconds"
  ExpiresByType text/css "access plus 2592000 seconds"
  ExpiresByType text/javascript "access plus 2592000 seconds"
  ExpiresByType text/html "access plus 7200 seconds"
  ExpiresByType application/xhtml+xml "access plus 7200 seconds"
  ExpiresByType application/javascript A259200
  ExpiresByType application/x-javascript "access plus 2592000 seconds"
  ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
 </IfModule>

Prise en compte du fichier .htaccess avec AllowOverride

(cf apache.org)

La directive AllowOverride ne peut être utilisée que dans les sections <Directory> définies sans expressions rationnelles, et non dans les sections <Location>, <DirectoryMatch> ou <Files>.

Lorsque cette directive et la directive AllowOverrideList sont définies à None, les fichiers .htaccess sont totalement ignorés. Dans ce cas, le serveur n’essaiera même pas de lire les fichiers .htaccess du système de fichiers. Lorsque cette directive est définie à All, toute directive valable dans le Contexte .htaccess sera autorisée dans les fichiers .htaccess.

DocumentRoot "/usr/local/apache2/htdocs"
 <Directory "/usr/local/apache2/htdocs">
 #
 # ...
 #
 AllowOverride controls what directives may be placed in .htaccess files.
 # It can be "All", "None", or any combination of the keywords:
 #   Options FileInfo AuthConfig Limit
 #
 AllowOverride None
 # Ci-dessous, pour filtrer les directives à autoriser, nous pouvons ajouter cette ligne.
 # Si défini à None, tout est interdit ... si !  AllowOverrideList <Directive> <Directive> <...>  #
 # ...
 #
</Directory>

Si nous avons accès au shell du serveur, il est conseillé (raisons de sécurité et de performance) d’ajouter les paramètres directement dans le fichier httpd.conf ou un fichier de config appelé par httpd.conf.

 

Prise en compte les modifications de httpd.conf

/etc/init.d/apache2 restart

ou alors

/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start

Ces articles peuvent vous intéresser




Retour