Apache est modulaire : cela signifie qu'il tourne avec un certain nombre de fonctionnalités de bases, et que les extensions sont dans des modules externes qu'il faut charger si on veut les utiliser. Néanmoins, par défaut, un certain nombre de modules sont disponibles. Selon qu'Apache a été compilé ou non avec le support dynamique des modules ou pas, les modules peuvent être simplement chargés avec la directive LoadModule (c'est ce que l'on appelle les objets dynamiques partagés ou Dynamic Shared Objects DSO) ou bien nécessitent une recompilation complète d'Apache avec les nouveaux modules.
Il existe des sections conditionnelles IfModule qui permettent de paramétrer le comportement d'Apache en fonction du chargement d'un module.