Apache · Configuration and operations

How is Apache configuration structured and loaded?

EasyconfigurationapachedirectivesUpdated Oct 2026
Quiz this track

Short answer

Apache reads a main configuration file and any files pulled in by Include directives. Directives are grouped in sections such as VirtualHost, Directory and IfModule, and the last matching directive in a section generally wins.

Configuration is hierarchical. Global directives apply to the whole server, section directives apply only inside their scope, and per-directory configuration can further override values. Includes make it practical to split configuration by site, module or environment.

apache
ServerRoot "/etc/apache2"
Listen 80
Listen 443

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

Timeout 60
ServerTokens Prod
TraceEnable Off

Sections you will use constantly

  • VirtualHost: per-domain or per-address configuration
  • Directory and DirectoryMatch: filesystem-based scope
  • Location and LocationMatch: URL-based scope
  • Files and FilesMatch: filename-based scope
  • IfModule and IfDefine: conditional configuration

Run apachectl configtest before every reload. It parses the configuration and reports unknown directives, bad paths and unclosed sections. A reload with a broken configuration can leave the running server unchanged, but a restart can take the service down.

Include order matters. If two files set the same directive at the same scope, the later one wins, so a sorted include glob can silently change behaviour when files are added.

Follow-ups you should expect

Interviewers use these to check whether the first answer was understanding or memorisation.

  1. 1How do you validate a configuration before reloading?
  2. 2What is the difference between Include and IncludeOptional?
  3. 3How does directive merge order work across sections?
  4. 4How do you manage configuration across environments?

Say it in the interview

Apache loads a main file and includes smaller files for modules, sites and shared settings. Sections scope directives to a virtual host, directory, URL or filename. I validate every change with apachectl configtest, then reload rather than restart. I also keep include order deterministic because the last matching directive at the same scope wins.

Use this as a model, not a script. Saying it in your own words is what makes it survive follow-up pressure.

Related questions

Reading is step one

Now say it out loud.

Understanding an answer and delivering it under pressure are different skills. Rehearse this topic in a live Apache mock interview and get scored feedback on depth, clarity and confidence.