Configuration

Configuration du serveur: Configuration des hôtes virtuels:

listen on

Définit sur quelle(s) interface(s) / adresse(s) écouter. Il est possible de définir plusieurs directives 'listen on'.
Syntaxe possible: On peut aussi préciser un port pour chaque directive 'listen on'.
Syntaxe possible: On peut simplifier la configuration en omettant la partie 'adresse/interface':

Top

set chroot

Définit un répertoire qui deviendra la nouvelle racine de mohawk. Toutes les directives 'vhost' seront relatives à ce répertoire.
Syntaxe possible:

Top

set debug

Active le mode 'debug'. L'option '-d' de la ligne de commande est prioritaire et active le mode. Valeur par défault: off.
Valeurs acceptées:

Top

set mime

Définit le chemin (absolu ou relatif) vers un fichier contenant les différents type 'mime'. Un fichier 'mime.txt' est fourni. Ce fichier sera lu avant un éventuel chroot.
Syntaxe possible:

Top

set user

Définit l'utilisateur sous lequel mohawk s'éxecutera. On ne peut pas définir un groupe.
Syntaxe possible:

Top

set pidfile

Définit l'emplacement d'un fichier 'pid'. Le fichier sera crée avant un éventuel 'chroot'. Valeur par défaut: '/var/run/mohawk.pid'.

Top

vhost ... { ... }

La directive 'vhost' définit un block d'option(s) relative(s) à un ou plusieurs hôtes virtuels. Elle prend en paramètre un motif. Le motif 'default' définit les options par défaut et doit apparaitre avant d'éventuelles autres directives 'vhost'.
Syntaxe possible:

Top

set rootdir

Définit la racine d'un 'vhost'. La racine physique correspond à chroot + rootdir + host. Quelques exemples:
vhost default {
    set rootdir /tmp
}

vhost www.example.com {
    set rootdir /var/www/virtual
}
Une requête vers 'http://www.example.com/index.html' correspondra à '/var/www/virtual/www.example.com/index.html'.
Une requête vers 'http://localhost/index.html' correspondra à '/tmp/index.html'.
vhost default {
    set rootdir /tmp
}

vhost *.example.com {
    set rootdir /usr/local/www/vhost
}
Une requête vers 'http://blog.example.com/index.html' correspondra à '/usr/local/www/vhost/blog.example.com/index.html'.
Une requête vers 'http://localhost/index.html' correspondra à '/tmp/index.html'.
set chroot /zfs/chroot

vhost default {
    set rootdir /tmp
}

vhost *.example.com {
    set rootdir /services/http
}
Une requête vers 'http://download.example.com/index.html' correspondra à '/zfs/chroot/services/http/download.example.com/index.html'.
Une requête vers 'http://localhost/index.html' correspondra à '/zfs/chroot/tmp/index.html'.

Top

set index_name { ... }

Définit une liste de nom de fichier utilisés lors d'une requête vers un répertoire. Les entrées d'un 'vhost' sont ajoutées à celle du vhost 'default'. Si cette directive n'est pas renseignée ou est vide, quelle que soit la requête concernant un répertoire, un listing (modulo son existantce et d'éventuels droits d'accès) sera retourné.
Exemples:
vhost default {
    set rootdir /tmp
    set index_name { index.html default.html}
}

vhost www.example.com {
    set rootdir /var/www/virtual
    set index_name { index.htm default.htm }
}
Une requête vers 'http://www.example.com/' retournera, depuis le répertoire '/var/www/virtual/www.example.com/', un des fichiers ci-dessous: et dans cet ordre. Si aucun de ces fichiers n'existent, un listing sera retourné.
Une requête vers 'http://localhost/' retournera, depuis le répertoire '/tmp/', les fichier 'index.html' ou 'default.html' s'ils existent, un listing dans le cas contraire.
vhost default {
    set rootdir /tmp
}

vhost www.example.com {
    set rootdir /var/www/virtual
}
Quelle que soit la requête concernant un répertoire, un listing sera retourné.
vhost default {
    set rootdir /tmp
}

vhost www.example.com {
    set rootdir /var/servers/http
    set index_name { index.cgi }
}
Une requête vers 'http://localhost/' retournera un listing.
Une requête vers 'http://www.example.com/dir/sub/dir' retournera, depuis le répertoire '/var/servers/http/dir/sub/dir/', le fichier 'index.cgi' s'il existe, un listing dans le cas contraire.

Top

set dirlist_css_url

Défini l'url, relative à un 'vhost', d'un fichier css. Un fichier 'dirlist.css' est fourni. Si cette directive est renseignée, le listing d'un répertoire contiendra une ligne "<link href='...' rel='stylesheet' type='text/css' />". Il n'est pas possible de préciser une url absolue ('http://css.example.com/style.css' n'est pas valide).
Exemple:
vhost default {
    set rootdir /tmp
    set dirlist_css_url /dirlist.css
}
Une requête vers 'http://localhost/dir' retournera un listing du répertoire '/tmp/dir'. Le source du listing contiendra une entête "<link href='/dirlist.css' rel='stylesheet' type='text/css' />".

Top

set charset

Cette directive définit le charset renvoyé lors du listing d'un répertoire ou des messages d'erreurs.
Exemple:
vhost default {
    set rootdir /tmp
    set charset iso-8859-1
}

vhost localhost {
    set charset utf-8
}
On peut aussi forcer le charset renvoyé pour un certain type mime.
Exemple:
html = text/html; charset=%s

set status_url

Cette directive définit une url qui renverra des informations concernant le status de mohawk. Ces informations proviennent de getrusage.
Exemple:
vhost default {
    set rootdir /tmp
}

vhost localhost {
    set status_url /status
}
Une requête vers 'http://localhost/status' retournera une page avec les information en provenance de 'getrusage'.
Une requête vers n'importe quel hôte virtuel retournera le fichier '/tmp/status' s'il existe.

Top

set no_log { ... }

Définit une liste de pattern des fichiers qui ne seront pas loggués.
Exemple:
vhost default {
    set rootdir /tmp
    set no_log { *.js *.ico }
}

vhost localhost {
    set no_log { /images/*.* /css/*.* }
}
Les requêtes suivantes ne seront pas logguées:

Top

set cgi_pattern { ... }

Définit une liste de pattern des fichiers correspondant à des scripts cgi.
Exemple:
vhost default {
    set rootdir /tmp
    set cgi_pattern { *.sh *.pl }
}

vhost localhost {
    set cgi_pattern { *.py }
}
Les requêtes suivantes seront traitées en tant que script cgi: Les requêtes suivantes ne seront pas traitées en tant que script cgi:

Top

set cgi_env { ... }

Définit une liste de paire clef/valeur utilisée pour enrichir l'environnement de scripts cgi.
Exemple:
vhost default {
    set rootdir /tmp
    set cgi_pattern { *.sh }
}

vhost localhost {
    set cgi_env {
        CDB_PATH '/var/db/cblog.cdb'
    }
}
Si un script shell '/tmp/localhost/printenv.sh' est présent, une requête vers 'http://localhost/printenv.sh' retournera une liste de variable d'environnement dont 'CDB_PATH'.

Top

set cgi_map { ... }

Définit une liste composée de pattern associé à un script cgi. Si le pattern correspond à l'url, le script cgi sera exécuté. Les variables QUERY_STRING et SCRIPT_NAME ne sont pas modifiées.
Exemple:
vhost default {
    set rootdir /tmp/www
    set cgi_pattern { *.sh }
    set cgi_map {
        /not_exist/*  /printenv.sh
    }
}
Une requête vers 'http://localhost/not_exist/' exécutera le script '/tmp/www/printenv.sh' s'il existe.

Top

set no_cgi_map { ... }

Définit une liste de pattern qui ne feront pas l'objet d'un cgi_map.
Exemple:
vhost default {
    set rootdir /tmp/www
    set cgi_pattern { *.cgi }
    set cgi_map {
        /*  /cgit.cgi
    }
    set no_cgi_map {
        *.css *.js *.png
    }
}

Top

set restrict_from

Cette directive définit une liste de chaînes qui seront comparées à l'adresse distante. En cas de non concordance, une réponse 403 sera retournée.
Exemple:
vhost default {
    set rootdir /tmp
}

vhost localhost {
    set status_url /status
    set restrict_from { "::1" }
}
On remarquera que les adresses ipv6 doivent être encadrées de double quote.
foo@bar> fetch -4 -o - http://localhost/status                                                                                                             
fetch: http://localhost/status: Forbidden
foo@bar> fetch -6 -1  http://localhost/status
fetch: http://localhost/status: size of remote file is not known
status                                                 284  B  275 kBps

Top

set maxage

Cette directive prend en paramètre un nombre de seconde. Si cette directive est définie, deux entêtes http supplémentaires sont retournées au client: 'xxx' correspond au paramètre et 'yyy' la date au format rfc 1123 correspondant à now + maxage

Top

set x_forwarded_for

Si un vhost se trouve derrière un proxy ou un reverse proxy, il peut être utile de logguer l'adresse du client plutôt que celle du proxy. Si cette directive est à 'on' et qu'une entête 'X-Forwarded-For' est envoyée, c'est le contenu de cette entête qui sera logguée en temps que 'remote_addr'. Valeur par défaut: 'off'.
Valeurs acceptées:

Top

set mohawk_name

Cette directive définit la chaine retournée lors de l'affichage du nom du serveur http ainsi que dans l'entête 'Server:'. Valeur par défaut: "mohawk/XX" où XX correspond à la version de mohawk.

Top

set cgi_expose_mohawk_version

Si cette directive est à 'on', les scripts cgi auront accès à une variable d'environnement 'MOHAWK_VERSION' initialisée avec la version de mohawk.

Top

reset

Réinitialise une directive. Les directives suivantes sont valides: Exemple:
...
vhost localhost {
    # reset all
    reset cgi_pattern
    reset no_log
    reset cgi_env
    reset index_name
    reset cgi_map
    reset no_cgi_map
    reset maxage
    reset restrict_from

    # only define index_name
    set index_name { bsdsx.html bapt.html }
}

Top