# # Wakdo - configuration Apache httpd 2.4 (main) # # Derivee de la conf par defaut fournie par httpd:2.4-alpine, adaptee au # projet : on active les modules necessaires, on pointe les vhosts Wakdo, # on desactive les defaults indesirables. # ServerRoot "/usr/local/apache2" Listen 80 # === Modules charges === # Core : LoadModule mpm_event_module modules/mod_mpm_event.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule access_compat_module modules/mod_access_compat.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule reqtimeout_module modules/mod_reqtimeout.so LoadModule filter_module modules/mod_filter.so LoadModule mime_module modules/mod_mime.so LoadModule log_config_module modules/mod_log_config.so LoadModule env_module modules/mod_env.so LoadModule headers_module modules/mod_headers.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule version_module modules/mod_version.so LoadModule unixd_module modules/mod_unixd.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule dir_module modules/mod_dir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule deflate_module modules/mod_deflate.so # Reverse proxy FastCGI vers PHP-FPM (le coeur de notre setup) : LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so # === Identite du serveur === # User/Group : utilisateur par defaut de l'image httpd:2.4-alpine. # Ne lit pas le code PHP (PHP-FPM s'en charge dans son propre conteneur). User daemon Group daemon # Masquer la version Apache dans les headers et les pages d'erreur. # Defense en profondeur : en cas de breach, un attaquant doit faire du work # pour identifier la version exacte. ServerTokens Prod ServerSignature Off # ServerName par defaut evite le warning "Could not reliably determine # the server's fully qualified domain name". Les vrais hostnames sont # dans les vhosts. ServerName wakdo-web # === Limites et timeouts (defense anti-slowloris) === Timeout 30 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 RequestReadTimeout header=10-20,MinRate=500 body=20,MinRate=500 # === Types MIME === TypesConfig conf/mime.types # === Logs === # stderr du conteneur = agregation par docker logs (Cr 7.d.1 observabilite). ErrorLog /proc/self/fd/2 LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog /proc/self/fd/1 combined # === Securite des headers par defaut (les vhosts peuvent surcharger) === Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options "SAMEORIGIN" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header unset Server # === MPM event (tuning workers) === Include conf/extra/wakdo-mpm.conf # === Configuration root globale (refus par defaut) === # Refuse tout acces hors des explicitement autorises dans le vhost. AllowOverride none Require all denied # === Vhosts du projet === # Kiosk (borne, sert du statique + relaye les API calls) et admin (back-office). Include conf/extra/wakdo-vhost.conf