Direktivy jsou pravidla, kterými můžu definovat jak se má server chovat, co je a co není dovoleno, kam se kdo může dostat apod. Direktivy píšu do konfiguračních souborů (apache.conf, httpd.conf)
Index direktiv a jejich podrobná dokumentace: Directive Index - Apache HTTP Server Version 2.4
ServerRoot
- kořenový adresář s instalací serveru, určuje adresář, kde jsou všechna globální nastavení webserveru, konfigurace apod.
- když někde zadám relativní cestu, tak se bere vůči nastavenému
<ServerRoot>
Listen
- na jakém portu se poslouchá (IP adresa/jméno, TCP port)
- můžu mít více IP adres, tak je mohu mít na jiných portech
ServerName
- doména, jméno serveru pro odpovědi (např. při redirectu)
- když se třeba přesměrovává na relativní adresu (tak se tam přidá ještě tenhle server name, aby to bylo kompletní absolutní adresa)
- hodí se také u Virtual Hosting, kde slouží k rozlišování jednotlivých VirtualHosts podle jména
DocumentRoot
- kořenová složka pro soubory, které jsou pak dostupné veřejně na webu (mapování kořene webu na filesystém)
- udává, jaký adresář na serveru koresponduje s ”/”
- udává, kde má Apache hledat soubory a zdroje požadované klientem
- díky tomu také funguje ochrana, že se nedá jít “výš” dotazem na ”../../../” atd.
AddDefaultCharset- nastavení znakové sadyDefine- definuje proměnnou, která se pak v konfiguraci může použít na více místech - viz Proměnné v konfiguraci
- každý Virtual Host může být jiný document root
Veškerou obsluhu chci vést pod jiným uživatelem (který není root)
- root je jenom na načtení configu, otevření portu atd.
- direktivy
UseraGrouppro specifikování identity uživatele a skupiny
Další direktivy najdu v poznámce Moduly pro Apache httpd
Logování
ErrorLog,LogLevelLogFormat,CustomLog- vlastní logování (v rámci modulu mod_log_config)
Řízení přístupu
- direktiva
Require- říkají, za jakých podmínek budou zdroje přístupné- definují se v rámci kontejnerových direktiv (Kontejnery pro direktivy)
- můžu požadovat uživatele nebo specifickou adresu
RequireAnymusí se splnit alespoň jedna podmínkaRequireAllmusí se splnit všechny podmínky
Kontejnery pro direktivy
- pokud je direktiva mimo kontejner, tak platí pro celý server
- některé direktivy musí být v nějakém kontejneru, jinak nedávají smysl
- kontejnery:
- podle částí souborového systému
<Directory>, <DirectoryMatch>, <Files>, <FilesMatch>
- podle zdroje (URL)
<Location>, <LocationMatch>, <Proxy>
- podle website
<VirtualHost>viz Virtual Hosting
- podmínkové
<IfDefine>,<IfModule>- vyhodnocují se při startu serveru<If podmínka> .. </If> <ElseIf> <Else>- vyhodnocují se vždy- nemohu je do sebe vnořovat
- podle částí souborového systému
Upozornění
Kontejner
<Directory />je povolen defaultně pro všechny, to znamená, že Apache defaultně zpřístupní vše, o co se dá říct URL - obvykle je nutné přístup do/zakázat a pak povolovat jenom určité části souborového systému (Require all denied) . Jinak je to bezpečnostní riziko.