Webhosting

IIS (Windows Server)

Definitie

IIS (Internet Information Services) is de webserver van Microsoft, ingebouwd in Windows Server en Windows. Hij voert PHP uit via zijn FastCGI-module en php-cgi.exe, en wordt ingesteld met web.config-bestanden; om WordPress met leesbare permalinks te draaien, heeft hij daarnaast de module URL Rewrite nodig.

IIS (Windows Server), Webhosting

IIS is de webserver die met Windows Server wordt meegeleverd, waar je hem als systeemrol inschakelt. Je kiest er vooral voor in Microsoft-omgevingen, voor ASP.NET-applicaties, maar hij kan ook PHP uitvoeren en dus WordPress. Het is ook de server die panelen als Plesk op hun Windows-servers gebruiken.

Hoe IIS PHP uitvoert

Sinds IIS 7.0 kun je met een FastCGI-onderdeel PHP en andere talen draaien; volgens Microsoft is dat in IIS 10.0 niet veranderd. De installatie volgt drie stappen die Microsoft Learn beschrijft:

  • de rolservice CGI installeren, die de FastCGI-module registreert;
  • een FastCGI-applicatie aanmaken die naar het uitvoerbare bestand van PHP wijst, bijvoorbeeld C:\PHP\php-cgi.exe;
  • een handlertoewijzing maken die de *.php-bestanden aan FastCgiModule geeft.

De PHP-site raadt hiervoor de "Non-Thread Safe"-versies (NTS) aan, die voor FastCGI zijn ontworpen; de "Thread Safe"-versies zijn bedoeld voor Apache, wanneer PHP als module wordt geladen. PHP-FPM, dat onder Linux veel samen met Nginx wordt gebruikt, is hier niet het gereedschap: IIS beheert zelf zijn php-cgi.exe-processen, met instellingen als het maximale aantal instanties of verzoeken voordat een proces wordt vernieuwd.

Schema van een WordPress-verzoek in IIS: de browser vraagt een pagina op, IIS ontvangt het verzoek voor de betreffende site, de module URL Rewrite past de regels uit web.config toe en stuurt het adres naar index.php, de handlertoewijzing geeft de .php-bestanden aan de FastCGI-module, en php-cgi.exe in de NTS-versie voert WordPress uit en stuurt de pagina terug.
Onder IIS speelt web.config de rol van .htaccess en php-cgi.exe die van PHP-FPM.

web.config en URL Rewrite

IIS leest de .htaccess van Apache niet. De configuratie staat in applicationHost.config op serverniveau, of in web.config-bestanden op het niveau van een site of map. Voor het herschrijven van URL's is de module URL Rewrite nodig, die je los downloadt, die werkt van IIS 7 tot IIS 10 en die mod_rewrite-regels van Apache kan importeren.

WordPress kan zijn permalinkregels zelf in de web.config schrijven. Dat doet het alleen als aan de voorwaarden is voldaan: IIS 7 of hoger, de module URL Rewrite geladen en PHP uitgevoerd via FastCGI, zoals de functie iis7_supports_permalinks() controleert.

Video: “What is IIS (Internet Information Services) and How Does It Work?” (Eye on Tech, in het Engels)

Voor WordPress

  • PHP-versie: onder Windows moet je nieuwe PHP-versies vaak zelf installeren. Volg de end-of-life-kalender van PHP en laat geen oude versie staan.
  • Het PHP-CGI-lek: in 2024 trof het lek CVE-2024-4577 PHP in CGI-modus onder Windows met bepaalde systeemtalen. Controleer je versie en je configuratie.
  • Vervang de web.config niet: voeg je regels toe aan de bestaande rewrite-sectie, zonder die van WordPress te wissen.
  • Bestandsrechten: de identiteit van de application pool moet in wp-content/uploads kunnen schrijven, maar niet in de hele site.

WP Masquerade ondersteunt IIS: de aliasregels van de Pro-versie horen in de sectie system.webServer/rewrite/rules van de web.config, zoals de pagina compatibiliteit met hosters en caches aangeeft.

Veelgemaakte fouten

De Thread Safe-versie van PHP voor IIS installeren, de module URL Rewrite vergeten en dan zoeken waarom de permalinks 404-fouten geven, of .htaccess-regels zonder omzetting in een web.config plakken: IIS begrijpt de syntaxis van Apache niet zomaar.

Verder lezen

  • Artikel CVE-2024-4577: het PHP-CGI-lek op Windows uitgelegd
  • Artikel PHP-versies die end-of-life zijn: planning, risico's en migratie
  • Pagina Compatibel met hosting en cache

Bronnen

  1. Microsoft Learn: FastCGI <fastCgi> (IIS configuration reference) (externe link, opent in een nieuw tabblad)
  2. IIS.net: URL Rewrite (externe link, opent in een nieuw tabblad)
  3. PHP: Downloads for Windows (Thread Safety) (externe link, opent in een nieuw tabblad)
  4. WordPress Developer Resources: iis7_supports_permalinks() (externe link, opent in een nieuw tabblad)

Alle definities

WordPress-beveiliging, zonder ruis

Eén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.

Begin gratis, stap over op Pro wanneer je eraan toe bent

De gratis versie verbergt WordPress al en verplaatst de inlogpagina. Pro voegt aliassen, tweestapsverificatie en bewaking toe.