Apache & ErrorDocument
I et tidligere indlæg beskrev jeg, hvordan jeg forsøger at bruge danske fejlmeddelelser.
I det her indlæg, vil jeg give en teknisk gennemgang af, hvordan meddelelserne eksempelvis kan sættes op i Apache webserveren. Den indstilling der styrer meddelelserne er ErrorDocument, men det er en indstilling som kan bruges på flere måder.
Først og fremmest, ved ikke at sætte ErrorDocument op for nogen af fejlkoderne i konfigurationen, bliver Apaches standardkoder brugt. De er korte, præcise og på engelsk: Perfekt for en tekniker men ikke ret brugervenlige for klienten.
Det er muligt at kalde en lokal fil, hvor fejlbeskeden bliver indlæst fra
ErrorDocument 503 /cgi-bin/503_error.cgi
Stien er en URL, så den ovenstående fil bliver indlæst fra en undermappe på hjemmesiden kaldet “cgi-bin”.
Ved at skrive protokollen foran, er det muligt at henvise til en anden hjemmeside
ErrorDocument 503 https://example.org/cgi-bin/503_error.cgi
Den sidste mulighed er at skrive fejlen som en inline parameter – altså direkte ind i konfigurationen
ErrorDocument 503 '<!DOCTYPE html><html lang="da-dk"><head><title>Service Unavailable</title></head><h1 style="text-align:center">503 - Service Unavailable</h1><p>Serveren du forsøger at forbinde til, er midlertidigt ikke ikke til rådighed. Prøv venligst igen om nogle minutter.</p></html>'
Bemærk at fejlen er skrevet som et gyldigt, omend noget minimalt, HTML5 dokument, og at Apaches konfiguration ikke understøtter UTF-8, så det er nødvendigt at bruge HTML entities til andet end ascii-tegn.
Når jeg viser fejl 503 som eksempel, er det fordi jeg bruger Apache både som proxyserver og som webserver. Hvis proxyserveren ikke kan kontakte den webserver der har den hjemmeside klienten vil se, viser den en fejl 503. Den tredje mulighed for at tilpasse fejlkoderne, er den eneste måde at undgå at proxyserveren skal have en docroot – altså have web-filer liggende på harddisken.
Det betyder at proxyserveren kan køre udelukkende fra RAM, og derfor kun giver en forsinkelse / overhead på sidevisninger på omkring ~10ms. pr. forespørgsel / request.
// Nicky