Popis

Multithreaded HTTP webserver pro Windows

Autor: Martin 'Bilbo' Petricek
WWW: http://www.petricek.net/

Instalace

Nakopírovat exweserv.exe kamkoliv na rozumné místo v systému.
Nakonfigurovat server. Jakožto vzor a návod lze použít sample.cz.conf
Server se spouští:
 exweserv.exe <jméno konfiguračního souboru>

Pokud se má spouštět server při každém startu windows, vložte do registru do klíče
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices"
položku pojmenovanou "exweserv" s hodnotou "<cesta k serveru>\exweserv.exe <jméno konfiguračního souboru>"

V případě potřeby lze spustit několik nezávislých serverů s různými konfiguračními soubory

Stránka na monitorování serveru (pokud je povoleno v konfiguraci) je na adrese /*
(např. "http://localhost/*")

Konfigurace

Typy položek použité v konfiguraci
celé čísloCeločíselná hodnota
řetězecŘetězec (bez uvozovek, pokud je v uvozovkách, uvozovky jsou pak součástí řetězce)
boolean hodnota1 znamená ano, 0 znamená ne. (ve skutečnosti kladné celé číslo znamená ano a cokoliv jiného ne)
autentikační záznam Těchto záznamů může být více, každý specifikuje jednoho platného uživatele s heslem pro přístup na základě uživatele/hesla
Formát je uživatel:typ:heslo
typ určuje typ hesla (0=plaintext, 5=md5)
Pokud nejsou specifikována žádná hesla, je povolen příástup všem, jinak pouze uživatelům, kteří se přihlásili svým heslem.
IP záznamIP adresa ve formátu X.X.X.X nebo IP rozsah ve formátu X.X.X.X-Y.Y.Y.Y. Druhá adresa by měla být větší než první.
Tento záznam se používá u konfigurace allow/ban, pokud je použit, záznamy se procházejí od posledního k prvnímu a první, který pro danou adresu povoluje (allow) nebo zakazuje (ban) přístup, tak se použije a seznam se dále neprochází Pokud pro adresu není žádnýn záznam, tak se přístup defaultně povolí.
Poznámka: můžete napsat "all": má to stejný efekt jako 0.0.0.0-255.255.255.255
Lze specifikovat ban=all k zakázání všech a pod tímto pak povolit pouze vybrané IP
Poznámka: Pokud je použito řízení přístupu jak přes IP adresy, tak přes hesla, přístup je povolen pouze lidem, splňujícím obě podmínky.

Obecná konfigurace

port

Formát: port=[celé číslo]
Default: 80
Na kterém portu server bude naslouchat

silent

Formát: silent=[boolean hodnota]
Default: 0 (ne)
Udává, jestli má být server tichý (nezobrazovat chybová hlášení) při výskytu chyby (pokud jsou chyby v konfiguračním souboru, nebo port je již obsazený)

monitorauth

Formát: monitorauth=[autentikační záznam]
Kontroluje přístup na základě uživatele/hesla k stránkám pro monitorování serveru

monitorban, monitorallow

Formát: monitorban=[IP záznam]
Formát: monitorallow=[IP záznam]
Kontroluje přístup na základě IP adresy k stránkám pro monitorování serveru

proxyban, proxyallow

Formát: proxyban=[IP záznam]
Formát: proxyallow=[IP záznam]
Kontroluje přístup na základě IP adresy k proxy

logmonitor

Formát: logmonitor=[boolean hodnota]
Default: 0 (ne)
Udává, jestli logovat přístupy na monitorovací stránku serveru do acces a error logu.

Virtuální adresáře

Virtuální domény, či adresáře mohou být nakonfigurovány. Každý je namapován na fyzickou cestu na disku.
Pokud je nějaká konfigurace umístěna mimo definici virtuálního serveru (tagy <root...> a </root>), tak je použita jako "defaultní" pro všechny virtuální servery za touto konfigurací (pokud není přebita jinou hodnotou). Tyto defaultní hodnoty jsou použity také pokud se nenajde virtuální adresář nebo doména odpovídající požadavku.

<root>

Formát:
<root [řetězec-doména a cesta]>
Konfigurace specifická pro tento virtuální adresář
</root>

Cokoliv před prvním lomítkem (/) je bráno jako hostname, pokud hostname začíná na tečku, tak tomu bude odpovídat hostname, který končí na zadané jméno.
Například záznamu ".centrum.cz" bude odpovídat např. mail.centrum.cz, www.centrum.cz, nebo i jen "centrum.cz". Pokud je doména prázdná, odpovídá kterákoliv doména a cokoliv za / je bráno jako adresář Tedy "/dir" bude odpovídat adresáři /dir ve všech doménách.
Záznamy se vyhodnocují od prvního do posledního a první, který odpovídá dané cestě a danému hostname se použije

alias

Formát: alias=[řetězec-doména a cesta]>
Aliasy musí být specifikovány jako poslední v bloku mezi <root...> a </root> Tímto se vytvoří alias a zkopíruje se konfigurace z virtuálního adresáře který je současným blokem definován, do nového virtuálního adresáře, či domény. Mají stejný efekt, jako blok <root...> a </root> s úplně stejnou konfigurací.

Konfigurace virtuálních adresářů

Následující konfigurace může být použita buď ve virtuálních adresářích, kde bude ovlivňovat pouze daný adresář, nebo mimo ně, kde ovlivní defaultní konfiguraci.

diskroot

Formát: diskroot=[řetězec]
Default: (aktuální adresář)
diskroot určuje odkud se budou brát stránky.

logformat

Formát: logformat=[řetězec]
Default: %r
Řetězec specifikuje formát záznamů v logu přístupů. Každý záznam je na jedné řádce a v řetězci lze použít tyto kódy:
Kód... bude nahrazen:
%%znak %
%{Položka}Položka z hlavičky příchozího požadavku
%avzdálená IP adresa
%Bdélka odpovědi v bajtech (množství poslaných dat bez hlavičky)
%mrequest method (GET, POST, ...)
%qquery string (bez ?)
%rprvní řádka požadavku
%skód odpovědi (200, 206, ...)
%tčas ve formátu (den/měsíc/rok:hodina:minuta:sekunda)
%uusername (při http autentifikaci)
%UURL
%vwebroot
Pro "skoro-apache" formát, použijte: %a - %u [%t] "%r" %s %B

accesslog

Formát: accesslog=[řetězec]
Default: (prázdný řetězec)
Určuje kam se budou ukládat logy přístupu. Více virtuálních adresářů může využívat stejný soubor. Prázdný řetězec znamená vypnuté logovani.

errorlog

Formát: errorlog=[řetězec]
Default: (prázdný řetězec)
Určuje kam se budou ukládat logy chyb. Více virtuálních adresářů může využívat stejný soubor. Prázdný řetězec znamená vypnuté logovani.

dirlist

Formát: dirlist=[celé číslo]
Default: 1
Formát výpisu adresáře.
0=výpis zakázán, 1=jednoduchý formát.
V budoucnu možná přibudou další formáty.

auth

Formát: auth=[autentikační záznam]
Kontroluje přístup na základě uživatele/hesla k stránkám v daném diskrootu

ipban, ipallow

Formát: ipban=[IP záznam]
Formát: ipallow=[IP záznam]
Kontroluje přístup na základě IP adresy k stránkám v daném diskrootu

index

Formát: index=[řetězece oddělené čárkou]
index určuje index stránku (stránky) oddělené čárkou. Pokud v adresáři není index stránka, zobrazí se výpis adresáře (pokud není zakázán).
Kontroluje se od první do poslední, první nalezená je použita

action

Formát: action=[maska];[mime-type];[akce];[parametr]
Pro různé typy souborů je možné nastavit různé akce. Lze mít více takových záznamů v souboru, každý pro jinou masku.
PoložkaVýznam
maska V masce lze použít tyto znaky:
*=jakýkoliv počet (0 a více) jakýchkoliv znaků
?=jakýkoliv 1 znak
Jakýkoliv jiný znak musí odpovídat znaku ve jméně souboru.
Pokud soubor odpovídá masce, použije se na něj pravidlo.
Pokud soubor odpovídá více maskám, použije se pouze první pravidlo v pořadí, dále se pravidly neprochází
mime-type nastavení mime-type pro tento typ souboru. Pokud pro nějaké soubory není v konfiguraci specifikován mime-type, bere se defaultní z tabulky natvrdo v serveru
akce Může nabývat následujících hodnot:
forbid : místo souboru se pošle chybová hláška "Forbidden" (HTTP kód 500)
exec : soubor se na serveru spustí (cgi)
execnph : soubor se na serveru spustí (nph-cgi)
sendnph : soubor se pošle bez přidávání jakýchkoliv HTTP hlaviček (užitečné pokud soubor již všechny HTTP hlavičky obsahuje) Při sendnph se ignoruje cokoliv z hlaviček (jmenovitě metoda a Range)
parametrpokud je akce exec nebo execnph, tak zde se specifikuje interpret. Ten se pak pustí a jeho prvním parametrem bude jméno souboru, místo aby se soubor pouštěl přímo (užitečné pro skripty v perlu, atd ....)

error

Formát: error=[celé číslo-kód chyby];[řetězec-chybová stránka]
Pro různé chyby lze nastavit různé vlastní chybové stránky.
Cesta k nim je buď absolutní nebo relativní vzhledem k diskrootu v aktuální konfiguraci

Server sám o sobě používá tyto HTTP chybové kódy:
400 Bad request
401 Unauthorized
403 Forbidden
404 File notfound
416 Bad range
501 Unsupported
500 Internal server error

pokud není soubor s chybovou hláškou nalezen, server pošle defaultní hlášku. Na soubor s hláškou se stále aplikují filtry na akce (takže pokud je to perl skript a je nastaveno jejich spouštění, tak bude spuštěn) Pokud stránka neobsahuje plnou cestu (včetně disku), cesta se bere relativní k diskrootu, na kterém došlo k chybě. Pokud došlo k chybě předtím než server zjistil do kterého virtuálního adresáře request patří (např. chyba 400), vezme se konfigurace chyb pro defaultní konfiguraci.

Ostatní dokumentace

install.cz.txtInstrukce k instalaci
description.cz.txtPopis programu
changelog.cz.txtChangelog
gpl_cz.txtLicence pro použití programu (GPL)
Tento manuál v angličtině