Syntax

The configuration file syntax must respect the following rules :
- One directive per line.
- A directive is written in the following way: Option = Value
- The option is case insensitive.
- The option's value is of the following type : integer, string, list, array :
    integer : 80
    string : "string"
    list : ("hello", "world")
    array : ("hello" => "bonjour", "world" => "monde")
- Comments can be inserted after a sharp '#'. The rest of the line is then ignored.

Here is a valid configuration example:
# listening ip and port, and maximum of simultaneous clients
ListeningIP    = "127.0.0.1:80"
ServerName     = "localhost"
MaxClients     = 15

# document root
DocumentRoot   = "/var/www"

# log files
ErrorLog       = "/var/log/http/error.log"
AccessLog      = "/var/log/http/access.log"

# index files
DirectoryIndex = ( "index.html", "index.htm" ) # we can let comments at the end of line

# mime types
MimeType       = ( "text/plain" => ".txt", "text/html" => ".htm", "text/html" => ".html" )


Options

ListeningIp

Type : <string>
Exemple : ListeningIP = "0.0.0.0:81"
Le port par défaut est 80, s'il n'est pas spécifié.
Défini l'adresse et optionnellement le port sur lesquels le serveur web acceptera les connexions.

User

Type : <string>
Exemple : User = "www-data"
Si l'utilisateur qui a lancé le serveur est root, alors l'utiliseur effectif du processus sera fixé à l'utilisateur spécifié.

Group

Type : <string>
Exemple : Group = "www-data"
Si l'utilisateur qui a lancé le serveur est root, alors le groupe effectif du processus sera fixé au groupe spécifié.

Chroot

Type : <string>
Exemple : Chroot = "/var/chroot"
Exécute le serveur dans le chroot spécifié.
Il faut être root pour utiliser cette option.

MaxClients

Type : <integer>
Exemple : MaxClients = 20
Valeur par défaut : 15
Définit le nombre maximum de clients simultanés.

MaxKeepAlive

Type : <integer>
Exemple : MaxClients = 1000
Valeur par défaut : 100
Définit le nombre maximum de requêtes "keep-alive" consécutives avant que le serveur ferme la connexion.

ErrorLog

Type : <string>
Exemple : ErrorLog = "/var/log/httpd/error.log"
Fichier de log des erreurs.

ServerSignature

Type : <integer>
Exemple : ServerSignature = 0
Valeur par défaut : 1
Affiche le nom du serveur et sa version dans les en-têtes HTTP.

VhostIP

Type : <list>
Exemple : VhostIP = ("127.0.0.1", "192.168.0.1:8080", "12.34.56.78:443")
Pour spécifier des hôtes virtuels basés sur leur adresse ip, il faut d'abord renseigner cette option.

VhostIP

Type : <list>
Exemple : Module = ("mod_listdir.so", "mod_ssl.so")
Définit les modules qui seront utilisé par le serveur.

DocumentRoot

Type : <string>
Exemple : DocumentRoot = "/var/www/site1"
Définit la racine de l'hôte courant.

ServerName

Type : <string>
Exemple : ServerName = "localhost"
Définit le nom de l'hôte courant.

AccessLog

Type : <string>
Exemple : AccessLog = "/var/log/httpd/access_site1.log"
Fichier de log des accès de l'hôte courant.

MimeType

Type : <array>
Exemple : MimeType = ( "text/plain" => ".txt", "text/html" => ".htm", "text/html" => ".html" )
Valeur par défaut : MimeType = ( "text/plain" => ".txt" )
Liste des associations entre le type MIME d'un fichier, et son extension. Les types sont comparés dans l'ordre dans lequel ils ont été déclarés. Si aucun type ne concorde avec l'extension du fichier demandé, le premier type du tableau est choisi.
Cette option s'applique à l'hôte courant.

DirectoryIndex

Type : <list>
Exemple : DirectoryIndex = ( "index.html", "index.php" )
Liste des fichiers à rechercher si un répertoire est demandé.
Cette option s'applique à l'hôte courant.

ErrorDocument

Type : <array>
Exemple : ErrorDocument = ( "404" => "/var/www/404.html", "403" => "/var/www/403.html" )
Liste des associations entre les numéros d'erreur HTTP et les pages d'erreurs personnalisées.
Cette option s'applique à l'hôte courant.


Hôtes virtuels

Une seule machine peut héberger plusieurs sites web. Ceci est réalisé au moyen des hôtes virtuels (virtual hosts).

Soit la configuration suivante du serveur et de l'hôte par défaut :
# server configuration
ListeningIP    = "0.0.0.0"
ErrorLog       = "/var/log/http/error.log"

# default host configuration
ServerName     = "exemple.com"
DocumentRoot   = "/var/www"
AccessLog      = "/var/log/http/access.log"

Si les hôtes virtuels que l'on veut déclarer possèdent les même adresses IP et les même ports que l'hôte par défaut, on déclare chacun d'eux dans un bloc entre accolades. Il est inutile de spécifier l'option ServerName, car le nom de l'hôte est présent dans la déclaration du bloc.
# virtual hosts configuration
if ($host == "wiki.exemple.com") {
  DocumentRoot = "/var/www/wiki"
  AccessLog    = "/var/log/httpd/access_wiki.log"
}

if ($host == "localhost") {
  DocumentRoot = "/var/www/localhost"
  AccessLog    = "/var/log/httpd/access_locahost.log"
}

Autrement, il faut d'abord déclarer quelles adresses IP seront utilisées, avec l'option VhostIP.
La définition de chaque hôte virtuel est ensuite faite comme précédemment, en précisant l'adresse IP et le port.
Il faut noter que l'option ServerName est alors indispensable dans le cas présent.
VhostIP = ("12.34.56.78", "192.168.0.128", "127.0.0.1:1000")

if ($host == "12.34.56.78") {
  ServerName   = "exemple1.com"
  DocumentRoot = "/var/www/exemple1"
  AccessLog    = "/var/log/httpd/access_exemple1.log"
}

if ($host == "192.168.0.128") {
  ServerName   = "pc128"
  DocumentRoot = "/var/www/pc128"
  AccessLog    = "/var/log/httpd/access_pc128.log"
}

if ($host == "127.0.0.1:1000") {
  ServerName   = "localhost"
  DocumentRoot = "/home/user19"
  AccessLog    = "/var/log/httpd/access_user19.log"
}


Sécurité

Laisser un serveur web avec les permissions du super utilisateur est extrèmement risqué. C'est pourquoi il est impossible de faire tourner ce serveur avec les privilèges du super-utilisateur. De plus, il est possible de changer le répértoire racine du serveur (chroot).
Ces actions sont possible au moyen des options User, Group, et Chroot.

Compiling, installing, starting and stopping, uninstalling

Server configuration

Modules configuration

How-to
SourceForge.net Logo