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:
- listen on em0
- listen on 192.168.0.1
- listen on www.example.com
On peut aussi préciser un port pour chaque directive 'listen on'.
Syntaxe possible:
- listen on ... port http
- listen on ... port 8080
On peut simplifier la configuration en omettant la partie 'adresse/interface':
- listen on port smtp
- listen on port 8888
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:
- set chroot /var/www
- set chroot /zfs/chroot/mohawk
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:
- set mime mime.txt
- set mime /var/db/mime_authorized.db
Top
set user
Définit l'utilisateur sous lequel mohawk s'éxecutera. On ne peut pas définir un groupe.
Syntaxe possible:
- set user nobody
- set user www-data
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:
- vhost default { ... }
- vhost www.example.com { ... }
- vhost *.example.com { ... }
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:
- index.html
- default.html
- index.htm
- default.htm
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:
- http://localhost/images/all.tar.gz
- http://localhost/css/README.txt
- http://www.example.com/private/prototype.js
- http://www.example.com/favicon.ico
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:
- http://localhost/printenv.sh
- http://localhost/printenv.pl
- http://localhost/printenv.py
- http://www.example.com/printenv.sh
- http://www.example.com/printenv.pl
Les requêtes suivantes ne seront pas traitées en tant que script cgi:
- http://localhost/printenv.php
- http://localhost/printenv.cgi
- http://www.example.com/printenv.py
- http://www.example.com/printenv.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:
- Cache-Control: max-age=xxx
- Expires: yyy
où '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:
- cgi_pattern
- no_log
- cgi_env
- index_name
- cgi_map
- no_cgi_map
- restrict_from
- maxage
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