Intro to Apache

The web server that revolutionized internet


  • Architecture to use loosely coupled components
  • Linux, Apache, Mysql, php/perl/python

What's a web server

It's what makes the internet run
But you already know that
     So can you name a few web servers?

HTTP PRotocol

Http request:
GET /index.html HTTP/1.1
       Http response:
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/ (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
ETag: "3f80f-1b6-3e1cb03b"
Content-Type: text/html; charset=UTF-8
Content-Length: 131
Accept-Ranges: bytes
Connection: close 

  <title>An Example Page</title>
  Hello World, this is a very simple HTML document.

Why Apache?

  • Its open source
  • Its fast, secure and reliable
  • It has modular architecture
  • Its concurrent
  • More than half the internet runs on it.
  • Fun fact: the word apache comes from "a patchy server", a reference to its initial beginnings.

High Level ARchitecture

Apache Core

  • Apache core takes care of the configuration
  • Controls the modules
  • And takes care of the serving the static content
  • Taker care of the logging

Apache Core Architecture

Apache MOdules

  • Access control: mod_authz_host
  • Authorization/Authentication: mod_auth
  • Dynamic Content eg. mod_php, mod_fcgi
  • Performace: mod_pagespeed,mod_spdy

LoadModule auth_module_modules/mod

Architecture of apache Module

Overall Architecture


  • For concurrency, apache uses something called multi-processing modules or MPMs
  • Each MPMs have different way of managing http requests
  • There are 3 most common MPMs for apache , mod_prefork, mod_worker, mod_event
  • Only one MPM can be used at a time


Apache Start and REstart

  • Since apache requires access to port 80, it needs to run as root
  • It spawns all the worker/fork process for serving requests (as mentioned in MPMs) as some other user specified in httpd conf
  • To restart/reload apache you send signal to the root apache process and it takes care of the child/spawned processes accordingly.
  • When apache is restarted, the parent apache is never killed unless you specifically stop it, only the child processes are stopped.


  • apchectl -k restart
  • apachectl -k  graceful
  • the init script /etc/init.d/httpd may behave differently depending upon distribution


  • similar to graceful restart, we have graceful-stop and normal stop
  • they can be invoked via "apachectl -k graceful-stop" and "apachectl -k stop" respectively
  • You can read more about starting, restarting and stopping here on apache docs. I have added links in the end.

Configuration Context

  • Server config
  • Virtualhosts
  • Directory/Location/File
  • htaccess file

  • Allow for serving multiple websites on a single server
  • A single server may have thousands of virtualhosts
  • Virtual hosts are either IP based, or Name based
  • You can define various configuration in the context of  a virtualhost

Virtual Hosts

  • Name Based
  • IP based


  • Simple module for serving php pages via apache
  • Loads up a php interpreter as an apache module
  • Has some performance penalties if compared to mod_fcgi but is simple to use if you want to run a small scale website

Some other MOdules

mod_authz_host for access_control

  • specify ip based control which sites


  • map a  url to a script or another file


  • to view info on the server status


  • two logs access_log  and error_log
  • access_log contains all the http requests processed by apache
  • error_log contains all the errors encountered while handling errors
  • we can enhance logs using various modules as well, eg mod_firstbyte

Apache VS Nginx

  • Nginx achieves better performance using an event model
  • Its asynchronous and tries to do non-blocking IO
  • Use multiplexing on different worker processes using underlying implementation using epoll,kqueue
  • apache support .htaccess and auth


  • (Nginx Architecture)
  • Previous year's presentation by deepak.b

Intro to Apache

By Ayush Goyal

Intro to Apache

  • 2,015