diff --git a/HowtoApache.md b/HowtoApache.md
index 173c1815..65d6b7b1 100644
--- a/HowtoApache.md
+++ b/HowtoApache.md
@@ -13,14 +13,14 @@ title: Howto Apache
Nous utilisons la version [Apache-ITK](http://mpm-itk.sesse.net/) depuis des années en production sur de nombreux serveurs critiques. Apache-ITK permet de préciser pour chaque VirtualHost un utilisateur, un groupe et une option *MaxClients* spécifiques, ce qui est utile pour la sécurité d'un serveur multi-sites.
~~~
-# apt install apache2-mpm-itk libapache2-mod-evasive apachetop libwww-perl
+# apt install apache2 libapache2-mpm-itk libapache2-mod-evasive apachetop libwww-perl
# apache2ctl -V
-Server version: Apache/2.4.10 (Debian)
-Server built: Sep 15 2016 20:44:43
-Server's Module Magic Number: 20120211:37
-Server loaded: APR 1.5.1, APR-UTIL 1.5.4
-Compiled using: APR 1.5.1, APR-UTIL 1.5.4
+Server version: Apache/2.4.25 (Debian)
+Server built: 2017-07-18T18:37:33
+Server's Module Magic Number: 20120211:68
+Server loaded: APR 1.5.2, APR-UTIL 1.5.4
+Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: prefork
threaded: no
@@ -44,31 +44,43 @@ Server compiled with....
-D SERVER_CONFIG_FILE="apache2.conf"
~~~
+> *Note* : Pour Debian 8, il faut installer ainsi :
+>
+> ~~~
+> # apt install apache2-mpm-itk libapache2-mod-evasive apachetop libwww-perl
+> ~~~
+
+
## Configuration de base
Fichiers de configuration :
- /etc/apache2/
- ├── apache2.conf
- ├── conf-available
- │ └── *.conf
- ├── conf-enabled
- │ └── *.conf -> ../conf-available/*.conf
- ├── envvars
- ├── magic
- ├── mods-available
- │ ├── *.conf
- │ └── *.load
- ├── mods-enabled
- │ ├── *.conf -> ../mods-available/*.conf
- │ └── *.load -> ../mods-available/*.load
- ├── ports.conf
- ├── sites-available
- │ └── *.conf
- └── sites-enabled
- └── *.conf -> ../sites-available/*.conf
+~~~
+/etc/apache2
+├── apache2.conf
+├── conf-available
+│ └── X.conf
+├── conf-enabled
+│ └── X.conf -> ../conf-available/X.conf
+├── envvars
+├── magic
+├── mods-available
+│ ├── X.load
+│ └── X.conf
+├── mods-enabled
+│ ├── X.load -> ../mods-available/X.load
+│ └── X.conf -> ../mods-available/X.conf
+├── ports.conf
+├── sites-available
+│ ├── 000-default.conf
+│ ├── default-ssl.conf
+│ └── X.conf
+└── sites-enabled
+│ ├── 000-default.conf -> ../sites-available/000-default.conf
+ └── X.conf -> ../sites-available/X.conf
+~~~
-Nous activons toujours les modules suivants :
+Nous activons toujours au minimum les modules suivants :
~~~
# a2enmod rewrite expires headers rewrite cgi
@@ -91,6 +103,8 @@ MaxRequestsPerChild 100
AllowOverride None
Require all granted
+ # "Require not env XXX" is not supported :(
+ Deny from env=GoAway
SSLProtocol all -SSLv2 -SSLv3
@@ -333,6 +347,58 @@ Le module [xsendfile](https://tn123.org/mod_xsendfile/) permet de rediriger l'en
Pour autoriser son utilisation via *.htaccess*, on ajoute `Options` à `AllowOverride`.
+### mod_negotiation
+
+Le module [negotiation](https://httpd.apache.org/docs/2.4/mod/mod_negotiation.html) permet de servir des documents en fonction de critère, notamment la langue acceptée par le client HTTP.
+
+~~~
+# a2enmod negotiation include alias
+~~~
+
+Vous pouvez éditer le fichier `/etc/apache2/conf-enabled/localized-error-pages.conf` qui permet d'afficher des pages d'erreur en différentes langues, et décommenter cette partie :
+
+Exemple avec un service HTTP local :
+
+~~~{.apache}
+
+
+
+
+ Alias /error/ "/usr/share/apache2/error/"
+
+
+ Options IncludesNoExec
+ AddOutputFilter Includes html
+ AddHandler type-map var
+ Order allow,deny
+ Allow from all
+ LanguagePriority en cs de es fr it nl sv pt-br ro
+ ForceLanguagePriority Prefer Fallback
+
+
+ ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
+ ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
+ ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
+ ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
+ ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
+ ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
+ ErrorDocument 410 /error/HTTP_GONE.html.var
+ ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
+ ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
+ ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
+ ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
+ ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
+ ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
+ ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
+ ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
+ ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
+ ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
+
+
+
+~~~
+
+
## Authentification HTTP
### HTTP Basic Authentication (mod_auth_basic)
@@ -440,7 +506,7 @@ Attention, pour certains sites avec de nombreuses ressources statiques sur le m
[Fail2Ban](HowtoFail2Ban) est indépendant d'Apache, mais peut être utilisé pour de la détection plus précise que *mod_evasive* : il va lire en permanence les journaux générés par Apache (ce qui peut être coûteux en ressources) et il pourra bannir des adresses IP si cela répond à certaines règles comme trop de connexions à une page d'authentification par exemple.
-
+Voir
### ModSecurity
@@ -493,7 +559,7 @@ Pour une configuration avancée, on ajuste l'utilisation du jeu de règles *mods
[AWStats](http://www.awstats.org/) est un outil pour générer des statistiques en fonction d'un fichier de logs.
-Voir http://trac.evolix.net/infogerance/wiki/HowtoLAMP/AwStats
+Voir
*Note :* une configuration AWStats peut être forcée au sein d'un VirtualHost grâce à la directive `SetEnv AWSTATS_FORCE_CONFIG example`
@@ -501,7 +567,7 @@ Voir http://trac.evolix.net/infogerance/wiki/HowtoLAMP/AwStats
### log2mail
-Pour être alerté en cas de *Segmentation fault*, on ajoute la configuration suivante au logiciel [log2mail](http://trac.evolix.net/infogerance/wiki/HowtoLog2mail) :
+Pour être alerté en cas de *Segmentation fault*, on ajoute la configuration suivante au logiciel [log2mail](https://wiki.evolix.org/HowtoLog2mail) :
~~~
file = /var/log/apache2/error.log