Crmgo Blog

Direktive http.conf

Direktive http.conf

ServerRoot Putanja do izvršnih fajlova HTTP servera Apache. Listen Postavlja port i IP adresu koju Apache „sluša“. Podrazumevano, svi pregledači pokušavaju da otvore HTTP vezu sa Apache serverom preko porta 80. Ako postavite drugi broj porta, na primer 9031, onda da biste otvorili stranicu u…

Direktive http.conf

ServerRoot Putanja do izvršnih fajlova HTTP servera Apache. Listen Postavlja port i IP adresu koju Apache „sluša“. Podrazumevano, svi pregledači pokušavaju da otvore HTTP vezu sa Apache serverom preko porta 80. Ako postavite drugi broj porta, na primer 9031, da biste otvorili stranicu u pregledaču, nakon adrese stranice morate dodatno navesti port pomoću dvotačke, na primer: http://localhost:9031. Takođe, u ovoj direktivi možete navesti jednu IP adresu koju će Apache obrađivati (na primer Listen 192.168.0.10:80), ako računar poseduje dve ili više IP adresa. DocumentRoot Ova direktiva u httpd.conf-u definiše direktorijum u kojem se nalaze html i drugi fajlovi jednog sajta. U slučaju potrebe za podrškom dva ili više sajtova od strane jednog Apache servera, treba koristiti direktivu-kontejner <VirtualHost></VirtualHost>. Prilikom korišćenja virtuelnih domena, ne treba zaboraviti na podešavanje prava pristupa direktorijumu navedenom u stavci „DocumentRoot“, jer će stranice ovog direktorijuma biti prikazane korisnicima koji unesu domen koji nije definisan u VirtualHost. <Directory>
...
</Directory>

Direktive navedene unutar kontejnera Directory uticaće na sve fajlove i foldere navedenog direktorijuma. Putanja do direktorijuma se navodi odmah nakon reči Directory, na primer: blok koda
<Directory "C:/apache2.2.19/htdocs"> ... direktive ... </Directory>

podešava ponašanje navedenog direktorijuma. Umesto imena direktorijuma, mogu se koristiti regularni izrazi. OptionsDirektiva Options definiše koje su karakteristike servera dostupne u konkretnom direktorijumu.

  • All - dozvoljene su sve opcije, osim MultiViews (podrazumevana postavka).
  • None - sve opcije su zabranjene.
  • ExecCGI - izvršavanje CGI skripti je dozvoljeno.
  • FollowSymLinks - server će pratiti simboličke linkove u ovom direktorijumu.
  • Includes - SSI (Server-Side Includes) je dozvoljen.
  • IncludesNOEXEC - SSI je dozvoljen, ali su komande #exec i #include u CGI skriptama blokirane.
  • Indexes - ako traženi URL odgovara direktorijumu, i u tom direktorijumu nema ništa što odgovara DirectoryIndex (na primer Index.htm), server će vratiti spisak svih fajlova i direktorijuma.
  • MultiViews - dozvoljena je sadržajna negocijacija MultiViews.
  • SymLinksIfOwnerMatch - server će pratiti samo one simboličke linkove za koje ciljni fajl ili direktorijum imaju isti identifikator korisnika kao i sam link.
Ako se više opcija direktive Options primeni na direktorijum, a zatim druge opcije na njegov poddirektorijum, opcije roditeljskog direktorijuma se ne prenose na poddirektorijum.
Primer br. 1 - nasleđivanje opcija:
<Directory "c:/www"> Options Indexes FollowSymLinks </Directory>

<Directory "c:/www/otherdir">
Options Includes
</Directory>

U ovom primeru direktorijumu c:/www i svim njegovim poddirektorijumima, osim c:/www/otherdir, dodeljuju se opcije „Indexes“ i „FollowSymLinks“. Poddirektorijum c:/www/otherdir i svi njegovi poddirektorijumi dobijaju samo opciju „Includes“.

Koristeći simbole "+" i "-", možete dodati ili ukloniti bilo koju opciju za poddirektorijum.
Primer br. 2 - nasleđivanje opcija:
<Directory "c:/www"> Options Indexes FollowSymLinks </Directory>

<Directory "c:/www/otherdir">
Options +Includes -Indexes
</Directory>

U ovom slučaju, direktorijum c:/www/otherdir će imati opciju "FollowSymLinks" (dodatu za nadređeni direktorijum) i "Includes" - dodatu pomoću znaka "+". Opcija "Indexes" je uklonjena iz direktorijuma c:/www/otherdir pomoću znaka "-". AllowOverrideOpcija AllowOverride označava Apache-u koje su direktive u .htaccess fajlu dozvoljene (naziv fajla ".htaccess" ili bilo koji drugi određuje se direktivom AccessFileName).

  • All - sve direktive su dostupne (koristi se podrazumevano).
  • None - .htaccess se ne obrađuje.
  • AuthConfig - dozvoljava korišćenje direktiva za odobravanje (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require, itd.).
  • FileInfo - dozvoljava korišćenje direktiva koje upravljaju tipovima dokumenata (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, itd.).
  • Indexes - dozvoljava korišćenje direktiva za upravljanje indeksiranjem kataloga (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, itd.).
  • Limit - dozvoljava korišćenje osnovnih direktiva za upravljanje pristupom (allow, deny i order).
  • Options[=Option,...] - dozvoljava korišćenje direktiva koje upravljaju specifičnim karakteristikama direktorijuma (Options i XBitHack).
U cilju performansi i maksimalne bezbednosti glavnog direktorijuma HTTP servera Apache "/", navedenog u kontejneru <Directory />, treba navesti vrednost AllowOverride kao None: AllowOverride None.

Order Direktiva Order upravlja stanjem pristupa podrazumevano i redosledom u kojem se pristup dozvoljava ili zabranjuje. Order može imati 3 vrednosti:

  • Allow,Deny - pristup je podrazumevano zabranjen, osim za hostove navedene u liniji nakon Allow from.
  • Deny,Allow - pristup je podrazumevano dozvoljen, osim za hostove navedene u liniji nakon Deny from.
  • Mutual-failure - pristup je dozvoljen samo za one hostove koji su prisutni u Allow i nisu prisutni u Deny.
U najčešćim slučajevima koriste se vrednosti Allow, Deny i Deny, Allow. Podrazumevana vrednost se određuje poslednjom rečju (Allow ili Deny). Između reči Allow i Deny, direktiva Order mora sadržati samo zarez, bez razmaka.
U primerima br. 1-3, radi kraćine, izostavljeni su otvarajući i zatvarajući kontejner <Directory ...></Directory>, ali su oni obavezni prilikom konfiguracije Apache servera.
Primer br. 1, prvom linijom "Order Deny,Allow", određuje redosled čitanja prava pristupa: prvo se čitaju sva prava koja nešto zabranjuju (Deny from...), a zatim prava koja dozvoljavaju (Allow from). Podrazumevano se postavlja Allow. Druga linija "Deny from all" zabranjuje pristup svim hostovima za sve domene. Treća linija "Allow from apache.org" dozvoljava pristup domenu apache.org.
Primer br. 1 dodeljivanja prava pristupa
Order Deny,Allow Deny from all Allow from apache.org
Sledeći primer br. 2 dozvoljava pristup samo domenu apache.org, sa izuzetkom poddomena foo.apache.org (Deny from foo.apache.org). Svi ostali domeni neće biti dostupni.
Primer br. 2 dodeljivanja prava pristupa
Order Allow,Deny Allow from apache.org Deny from foo.apache.org
Primer br. 3 se razlikuje od primera br. 2 samo po vrednosti direktive Order: "Deny,Allow" umesto "Allow,Deny". Međutim, logika dodeljivanja prava pristupa Apache serveru će se, na prvi pogled, prilično neočekivano promeniti. Pristup će biti otvoren za apsolutno sve domene, čak i za poddomen foo.apache.org, koji je eksplicitno zabranjen linijom "Deny from foo.apache.org". To se dešava zato što redosled linija "Allow from ..." i "Deny from ..." nema značaja. Redosled primene pravila određuje se direktivom Order, na osnovu čega Apache prvo zabranjuje pristup foo.apache.org, a zatim prepisuje to pravilo, na osnovu direktive "Allow from apache.org".
Primer br. 3 dodeljivanja prava pristupa
Order Deny,Allow Allow from apache.org Deny from foo.apache.org
Primer br. 4 zabranjuje pristup direktorijumu C:/www podrazumevano, čak i bez korišćenja linije "Deny from ...".
Primer br. 4 dodeljivanja prava pristupa
<Directory "C:/www"> Order Allow,Deny </Directory>

Dodatne informacije o direktivama Allow, Deny i Order možete pronaći u zvaničnoj dokumentaciji Apache2.2 (eng). <VirtualHost>
...
</VirtualHost>

Kontejner <VirtualHost>...</VirtualHost> koristi se za obradu više sajtova od strane jednog Apache servera. Sve direktive zapisane u kontejneru VirtualHost primenjuju se isključivo na jedan sajt. Jedan sajt (skup fajlova i direktorijuma) može biti dostupan preko jednog ili više domena ili IP adresa.
Specijalno ime _default_ može biti definisano kada će se ovaj konkretan virtuelni host podudarati sa bilo kojom IP adresom koja nije eksplicitno navedena u deklaraciji drugog virtuelnog hosta. Ako deklaracija _default_ virtuelnog hosta nedostaje u konfiguraciji servera i zahtev ne odgovara nijednom od poznatih virtuelnih hostova, onda se za odgovor koristi glavni server, čiji je direktorijum definisan direktivom DocumentRoot.
Unutar svakog kontejnera VirtualHost mogu se koristiti gotovo sve Apache direktive, što omogućava detaljno podešavanje svakog sajta.
Primer podrške za dva različita sajta od strane jednog Apache servera
<VirtualHost *:80> ServerName first.loc ServerAlias www.first.loc DocumentRoot "c:/www/first.loc/public" ErrorLog "c:/www/first.loc/logs/error.log" </VirtualHost>

<VirtualHost *:80>
ServerName second.loc
ServerAlias www.second.loc
DocumentRoot "c:/www/second.loc/public"
ErrorLog "c:/www/second.loc/public"
</VirtualHost>

Napomena: tekst može biti uz pomoć AI uz ljudsku proveru. Odgovoran: Dmytro Lomaka, Kaltenkirchen.