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