Almost every Apache 129 feature is a module, and a directive exists only while its module is loaded. A few are compiled in (static); the rest are loaded at startup by lines such as LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so, which Ubuntu 225 keeps in mods-available/NAME.load beside an optional NAME.conf of defaults. The package ships 116 modules and loads 29 (9 static, 20 shared).
sudo a2enmod headers
sudo apache2ctl -M | grep -c _module
sudo apache2ctl -V | grep MPMEnabling module headers. To activate the new configuration, you need to run: systemctl restart apache2.service 30 Server MPM: prefork
a2enmod resolves dependencies (ssl pulls in socache_shmcb), a2dismod refuses to remove a module others need, and a reload suffices for an ordinary module despite the restart hint. Exactly one MPM is loaded; it decides how connections are handled, and it is prefork here because mod_php requires it (PHP-FPM via proxy_fcgi and MPMs and Workers move to PHP-FPM and event).
Each module costs memory in every process and adds attack surface. Candidates to disable: autoindex, which lists directories lacking an index file; status, a local-only map of your clients and URLs at /server-status; negotiation, needed only for MultiViews and type maps; and access_compat, which exists only for the old Order/Allow/Deny syntax. autoindex is marked essential, so a2dismod autoindex asks you to type Yes, do as I say! (or pass -f).