Apache 2.4

Denna guide beskriver de vanligaste ändringar man kan behöva göra för att göra sin hemsida kompatibel med Apache 2.4.

Använder du WordPress och får en vit sida med meddelandet ”Internal server error” efter att din sida har flyttats till Apache 2.4, se denna guide.

Apache 2.4 har många fördelar gentemot föregångaren 2.2. Den största fördelen är prestandan. Apache 2.4 är mycket effektivare än 2.2 och kan därmed leverera de flesta sidor snabbare än föregångaren.

Då stödet för Apache 2.2 inom kort kommer upphöra helt bör denna uppdatering göras så snart som möjligt.


Gör sidan kompatibel med Apache 2.4

Om du exempelvis kör WordPress, Joomla eller något annat publiceringsverktyg är det troligtvis inte mycket du behöver göra för att sidan ska fungera på Apache 2.4.

  • Se som vanligt till att allt (WordPress, Joomla, tillägg, teman osv.) är uppdaterade till de senaste versionerna.
  • Se till att de tillägg/teman du använder fortfarande får uppdateringar av utvecklaren. För WordPress finns denna information på wordpress.org eller på den webbplats där temat/tillägget köptes. Har temat/tillägget uppdaterats någon gång under de senaste månaderna kan de räknas som aktiva och bör vara kompatibla med Apache 2.4.
  • Är delar av din webbplats specialbyggda bör du kontakta den som byggt detta och kontrollera att dessa delar är kompatibla med Apache 2.4.

Observera att dessa eventuella uppdateringar måste göras innan du byter till Apache 2.4 i kundzonen. Skulle sidan sluta fungera efter du ändrat till Apache 2.4 kan du prova att byta till en äldre PHP-version alternativt kontakta vår support.


Gör så att din sida körs med Apache 2.4

För att köra din hemsida på Apache 2.4 på Loopia loggar du in i Loopia Kundzon och klickar på ditt domännamn. Under rubriken “Konfigurering” väljer du “Hemsida hos Loopia (ny plattform)” > “Unix” och väljer “PHP 8.1, Apache 2.4” för att köra sidan med Apache 2.4 och PHP-version 8.1.


Manuell uppdatering (avancerat)

Uppdateringen till Apache 2.4 berör direktiven i .htaccess-filen, inklusive funktioner som skriver till .htaccess-filen.

Ändringar rörande auktorisering

De stora förändringarna här rör inställningarna för auktorisering vilka styr vilka som kan få se en sida och vilka som ska stängas ute. Dessa funktioner används ofta i brandväggar för sidan och för att till exempel bara låta besökare med specifika IP-adresser besöka en sida. Kontrollera om .htaccess-filen innehåller något av följande direktiv:

  • Order
  • Allow
  • Deny
  • Satisfy

Om den inte gör det verkar du i dagsläget inte använda någon sådan funktionalitet och därmed bör koden redan fungera som den ska på Apache 2.4.

I Apache 2.4 används istället direktivet “Require” vilket man använder för att beskriva kriterier som måste uppfyllas för att en besökare tillåtas se sidan.

Se även: https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html

Dessa direktiv kan grupperas i olika block vilka styr vad som krävs för att de ska räknas som uppfyllda:

  • RequireAll
    Samtliga krav behöva uppfyllas för att besökaren ska få tillgång till sidan.
  • RequireAny
    Endast ett krav i blocket uppfyllas för att ge tillgång till sidan. Om Require-direktiven inte grupperas hanteras de på samma sätt av Apache som om de var i ett RequireAny-block.
  • RequireNone
    Inget av Require-direktiven i blocket får uppfyllas om besökaren ska få tillgång till sidan.

Exempel

# Tillåt endast besökare från nedanstående IP adresser
Require ip 93.188.2.53
Require ip 2a02:250:0:8::53

# Tillåt ingen att besöka sidan
Require all denied

# Tillåt endast autentiserad användare
AuthUserFile /www/absolute/path/.htpasswd
AuthType  Basic
AuthName  "Forbidden area"
Require  valid-user

# Tillåt inte POST förfrågningar
<RequireAll>
       Require all granted
       Require not method POST
</RequireAll>

# Förhindra "hotlinking" av bilder
SetEnvIf Referer "mindoman\.se" localreferer
<FilesMatch "\.(jpe?g|gif|png)$">
       Require env localreferer
</FilesMatch>

# Direktiv som endast körs av Apache < 2.3
<IfModule !mod_authz_core.c>
       Order Allow,Deny
       Allow from all
</IfModule>

# Direktiv som endast körs av Apache >= 2.3
<IfModule mod_authz_core.c>
       <RequireAll>
              Require all Granted
       </RequireAll>
</IfModule>

Ändringar rörande AddOutputFilterByType

Direktivet AddOutputFilterByType har i och med Apache 2.4 flyttat till module mod_filter. Detta är en modul som inte finns på våra webbservrar. Därmed måste alla rader i .htaccess-filen som kör detta direktiv raderas.

Om du i nuläget använder detta direktiv för att aktivera gzip behöver du inte göra något annat än att radera raderna, då gzip-komprimering automatiskt är påslaget på vår Apache 2.4-plattform.

Hantera requests över https (SSL)

Om man inte vill använda sig av funktionen ”Tvinga SSL” som du hittar under konfigureringen av din domän i Loopias kundzon. Så kan du istället använda dig av följande exempel direkt i htaccess filen.

# Är Loopia SSL på?
RewriteCond %{HTTP:X-Loopia-SSL} off                                                                                                                                         # Använd inte www här. Om de redan avvänder www så kommer det att komma med, 
# annars kommer regeln under att lägga till det.

RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]  
# Skriv om alla anrop till fel domän med rätt anrop och www.

# [NC] sätt på case-insensitive matchning.
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Övriga ändringar och mer information

Förutom ovanstående förändringar har även några mindre gjorts i Apache 2.4. Majoriteten av de som behöver uppdatera sin kod är dock inte berörda av dessa. En komplett beskrivning om vad som har uppdaterats kan hittas här:

https://httpd.apache.org/docs/trunk/upgrading.html

Var den här artikeln till hjälp?

Relaterade artiklar