Apache HTTP-palvelin
APACHE HTTPD KOULUTUSTA VUONNA 2025!
Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.
Apachen tärkeimmät globaalit direktiivit: ServerRoot, Listen, KeepAlive
Kuten termistä globaali voi jo päätellä, vaikuttavat tiedoston httpd.conf
globaalit ominaisuudet koko palvelimen toimintaan koskettaen kaikkia palvelimen palveluita.
Tässä käsitellyt ominaisuudet kattavat vain pienen osan tarjolla olevista globaaleista ominaisuuksista, laajemmin näitä on esitelty mm. httpd.conf esimerkissä.
ServerRoot määrittää palvelimen juurihakemiston
Ominaisuus ServerRoot
määrittää palvelimen juurihakemiston sijainnin.
Apache etsii konfiguraatiotiedostoja, lokitiedostoja ja muita resursseja oletusarvoisesti tästä kansiosta:
ServerRoot "C:/Program Files/Apache Group/Apache2"
Huom! Muista tutustua käyttöjärjestelmän tietoturva-asetuksiin palvelimen juurikansion osalta.
Listen - kuinka muuttaa Apachen porttinumero
Ominaisuus Listen
määrittää mitä porttia Apache-palvelin kuuntelee.
Oletusarvoisesti porttina käytetään normaalia HTTP-liikenteen porttia, eli 80.
Jos samalle tietokoneelle on useita HTTP-palvelimia, jokaisen tulee kuunnella eri porttia. Tätä tarvitaan esimerkiksi silloin, kun Apachesta asennetaan päivitystä varten useita rinnakkaisia versioita. Samoin tämä mahdollistaa kehityskäytössä useamman palvelimen, kuten Apachen ja IIS:n, rinnakkaisen testaamisen.
Alla oleva esimerkki määrittelee Apachen kuuntelemaan porttia 8080:
Listen 8080
Ominaisuuden avulla on mahdollista sitoutua myös tarkkaan määriteltyihin IP-osoitteisiin ja/tai portteihin, joka parantaa merkittävästi palvelun tietoturvaa määrätyissä tilanteissa:
Listen 127.0.0.1:8080
Palvelimen suorituskyvyn hallinta
Ominaisuus ThreadsPerChild
määrittää kuinka monta samanaikaista suoritussäiettä palvelimella voi olla käytössään.
MaxRequestPerChild
määrittää kuinka monta pyyntöä yksittäinen palvelimen prosessi voi maksimissaan käsitellä.
Mitä isompi arvo näille ominaisuuksille määritellään, sitä isomman määrän pyyntöjä palvelin pystyy käsittelemään (edellyttäen että palvelinkoneessa on riittävästi suorituskykyä ja muistia)
ThreadsPerChild 500
MaxRequestsPerChild 0
POSIX-alustalla suorituskyvyn hallinta tapahtuu säikeiden sijaan lapsiprosesseina, ja ominaisuuden ThreadsPerChild
sijaan käytetään ominaisuuksia
StartServers
, MinSpareServers
, MaxSpareServers
.
Nämä direktiivit on siirretty Apache 2.2.x-sarjassa konfiguraatiotiedoon /conf/extras/httpd-default.conf.
Timeout määrää aikakatkaisun rajan
Ominaisuus Timeout
määrittää ajan, jonka palvelin yrittää suorittaa yksittäistä pyyntöä.
Pyyntö voi olla normaali HTTP GET-pyyntö, tai esimerkiksi HTTP POST/PUT-komennon TCP-pakettien vastaanotto.
Jos aikaraja ylittyy, tulee palvelimen vastata asiaankuuluvalla virheilmoituksella.
Oletusarvoisesti aikakatkaisu on 5 minuuttia eli 300 sekuntia.
Timeout 300
Usein aikaraja halutaan asettaa huomattavasti matalammaksi.
KeepAlive määrittää kestävät HTTP-yhteydet
WWW-palvelimen vasteaikojen nopeus ja resurssien tasainen jakaminen kävijöiden kesken ovat tärkeitä tekijöitä.
Yksi yleisimmistä tavoista parantaa näitä on käyttää kestäviä yhteyksiä — eli sallia useampi pyyntö samalla HTTP-yhteydellä.
Apache-palvelimella kestävät yhteydet määritellään ominaisuuksilla KeepAlive
, MaxKeepAliveRequests
ja KeepAliveTimeout
.
Etenkin verkkopalveluissa, joissa on paljon kuvia, näiden asetusten hyödyntäminen voi parantaa vasteaikoja jopa 50%.
Kestävät yhteydet saadaan käyttöön / pois päältä ominaisuudella KeepAlive:
KeepAlive On
Ominaisuus MaxKeepAliveRequests
määrittelee suurimman sallittavan pyyntöjen määrän kestävässä yhteydessä.
Mikäli ominaisuuden arvoksi annetaan nolla, ei yhteyksien määrää rajoiteta.
Suorituskyvyn ja yleisen tietoturvan kannalta on kuitenkin suositeltavaa asettaa jonkinasteinen katto tälle ominaisuudelle:
MaxKeepAliveRequests 100
KeepAliveTimeOut
määrittelee sekunteina ajan jonka sisällä tapahtuvat pyynnöt lasketaan samaan yhteyteen kuuluviksi:
KeepAliveTimeout 5