Windows Server 2025 / Installare IIS e pubblicare una pagina HTML statica nel laboratorio

In Windows Server 2025 IIS può servire una pagina HTML dopo l’installazione del ruolo server web e delle funzionalità per contenuto statico. Configurate percorso fisico, pool di applicazioni, binding e permessi di lettura, quindi controllate la pagina su WEB1 e da un client separato.

Preparare un server web separato

Internet Information Services (IIS) è il server web di Windows. Questa prova restituisce un file statico: il server invia HTML senza database o framework applicativo. PHP e ASP.NET richiedono runtime e configurazioni aggiuntivi; non installateli per questo esempio.

Preparate WEB1 come server membro del dominio separato, con Windows Server 2025 ed Esperienza desktop nella rete isolata del laboratorio, senza aggiungere il ruolo a DC1 o FS1. L’esempio usa 172.24.50.30/24, il DNS DC1 a 172.24.50.10 e appartenenza ad ad.example.test. Verificate prima che l’indirizzo sia libero e assegnato al server, che rete e DNS di dominio funzionino e che l’host disponga di risorse. Non collegate il laboratorio alla rete di produzione per risolvere questi prerequisiti.

Usate Windows PowerShell con privilegi elevati e Gestione IIS su WEB1. I nuovi oggetti saranno LabSite, LabSitePool, C:\Sites\LabSite e la porta HTTP 8080. Esaminate siti, pool, cartelle, regole e binding esistenti. Se un nome o una destinazione è già in uso, fermatevi senza sostituirli. Mantenete separato il binding del sito predefinito sulla porta 80 e non esponete il server a Internet. HTTP qui trasporta soltanto testo di prova senza segreti, non è un canale protetto per credenziali.

Installare IIS e verificare le funzionalità

  1. In Server Manager scegliete Gestisci → Aggiungi ruoli e funzionalità, installazione basata su ruoli e WEB1 come destinazione. Controllate il server prima di continuare.
  2. Selezionate Server Web (IIS) e gli strumenti di gestione necessari. Questa prova usa la console locale con Esperienza desktop; Server Core richiede un altro metodo di gestione.
  3. In Funzionalità HTTP comuni controllate Contenuto statico e Documento predefinito; in Integrità e diagnostica controllate Registrazione HTTP. Verificate anche Console di gestione IIS.
  4. Esaminate il riepilogo e installate senza runtime applicativi non pertinenti. Non selezionate tutte le funzionalità per comodità.
  5. Leggete esito e richiesta di riavvio. Se necessario pianificate e completate il riavvio, poi ricontrollate lo stato prima di procedere. Aprite Gestione IIS con inetmgr.

L’alternativa PowerShell si esegue localmente su WEB1. Se IIS è già presente, esaminate prima stato delle funzionalità e utilizzo dei siti. Install-WindowsFeature richiede privilegi elevati e non installa gli strumenti di gestione per impostazione predefinita; per questo viene incluso IncludeManagementTools. Eseguite le righe separatamente e fermatevi in caso di errore. Installare il ruolo non configura automaticamente percorso, permessi o accesso di rete:

Install-WindowsFeature Web-Server -IncludeManagementTools
Get-WindowsFeature Web-Static-Content,Web-Default-Doc,Web-Http-Logging,Web-Mgmt-Console

Ci si aspetta installazione riuscita e stato Installed per Web-Static-Content, Web-Default-Doc, Web-Http-Logging e Web-Mgmt-Console in Get-WindowsFeature. Controllate anche RestartNeeded. Available non soddisfa il requisito: tornate alla procedura guidata per installare precisamente la funzionalità mancante e verificate di nuovo. La presenza della console non dimostra tutte le funzionalità per servire la pagina.

Creare pagina e pool dedicato

Se C:\Sites\LabSite esiste, fermatevi e accertatene lo scopo senza sovrascrivere file. Altrimenti create la cartella e salvate il documento completo seguente come index.html in UTF-8. Nel Blocco note scegliete Tutti i file durante il salvataggio e verificate in Esplora file, con estensioni visibili, che il nome reale non sia index.html.txt. L’esempio conserva testo inglese e lang="en"; la frase consente di riconoscere il sito che risponde:

<!doctype html>
<html lang="en">
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>LabSite</title></head>
<body><h1>Windows Server 2025 web server lab</h1><p>This page is served by LabSite on WEB1.</p></body>
</html>
  1. In Gestione IIS → Pool di applicazioni create LabSitePool soltanto se il nome è libero. Se esiste già o appartiene ad altri lavori, fermatevi senza sostituirlo.
  2. Per questo sito soltanto statico scegliete Nessun codice gestito (No Managed Code) come versione CLR .NET. La scelta non installa PHP né altri runtime.
  3. In Impostazioni avanzate del pool confermate Identity = ApplicationPoolIdentity. Non sostituite l’identità con un amministratore.
  4. In Proprietà → Sicurezza di C:\Sites\LabSite scegliete WEB1 come percorso di ricerca e aggiungete IIS AppPool\LabSitePool con Controlla nomi. Se non viene risolto, controllate posizione locale, nome ed esistenza del pool.
  5. Concedete Lettura ed esecuzione, Visualizzazione contenuto cartella e Lettura a cartella e file, mantenendo SYSTEM e amministratori. Non date al processo web scrittura o Controllo completo.

Un’identità del pool di applicazioni è un account virtuale associato al pool, non un utente da creare manualmente nel dominio. Il pool raggruppa applicazioni per i processi di lavoro IIS; qui ne usate uno dedicato. Separate la scrittura dell’amministratore che pubblica dalla lettura del processo web. Servire questa pagina non richiede amministrazione, scrittura o Controllo completo al pool. Non copiate concessioni ampie da esempi generici; verificate che la lettura si applichi a index.html e non sia impedita da una negazione.

Configurare sito e identità anonima

  1. In Siti → Aggiungi sito Web impostate LabSite, scegliete LabSitePool e C:\Sites\LabSite come percorso fisico. Controllate che il pool selezionato non sia un altro creato automaticamente.
  2. Usate tipo http, IP 172.24.50.30, porta 8080 e nome host vuoto. Verificate che WEB1 abbia quell’IP e che nessun binding o servizio usi già la combinazione.
  3. In LabSite → Autenticazione → Autenticazione anonima confermate Abilitata, scegliete Modifica e Identità pool di applicazioni. Applicate solo al sito di prova.
  4. In LabSite → Documento predefinito confermate l’abilitazione e index.html nell’elenco; aggiungetelo solo se manca. Non abilitate Esplorazione directory.
  5. Ricontrollate binding, percorso, pool e stato, poi avviate il sito. Se fallisce, conservate il messaggio e risolvete il conflitto senza arrestare siti altrui.

L’utente anonimo predefinito IUSR è diverso dall’identità del pool. Scegliere esplicitamente il pool nelle impostazioni di autenticazione anonima allinea le richieste della pagina ai permessi concessi a IIS AppPool\LabSitePool. Verificate inoltre che Autenticazione anonima sia abilitata su LabSite. Non correggete errori di autenticazione assegnando scrittura a Everyone o cambiando l’intera configurazione del server.

Nel browser di WEB1 aprite http://172.24.50.30:8080/index.html e poi http://172.24.50.30:8080/. Ci si aspetta il titolo visibile Windows Server 2025 web server lab e la frase This page is served by LabSite on WEB1. Non deve apparire la pagina di benvenuto del sito predefinito né una copia locale aperta con file://. L’URL radice richiede che index.html esista e sia elencato come documento predefinito. Il riferimento New-Website descrive anche percorso, porta e pool; non create un secondo sito se avete già seguito la procedura guidata.

Verificare il client e diagnosticare la risposta

Dopo aver confermato il profilo Dominio sull’interfaccia di laboratorio di WEB1, aprite wf.msc → Regole connessioni in entrata → Nuova regola → Porta → TCP e porta locale 8080 → Consenti la connessione → solo Dominio. Usate Lab-IIS-HTTP-8080 se non esiste. Poi, in Proprietà → Ambito, limitate gli indirizzi IP remoti a 172.24.50.0/24 e ricontrollate porta e profilo. I filtri delle regole firewall distinguono porta locale e origine remota. Un profilo inatteso richiede controlli di DNS e connettività di dominio, non di estendere la regola a tutti i profili o spegnere il firewall. Esaminate anche regole o criteri che potrebbero già consentire un ambito maggiore.

Su CLIENT1 nella sottorete autorizzata eseguite il test seguente, poi aprite entrambi gli URL nel browser. TcpTestSucceeded: True conferma soltanto il collegamento TCP alla porta, non HTML, permessi o sito corretti. Con False controllate percorso di rete, profilo, regola e porta in ascolto, senza cambiare subito le credenziali del sito:

Test-NetConnection -ComputerName 172.24.50.30 -Port 8080
Sintomo Controllo
Timeout Percorso di rete, profilo e regole firewall, porta in ascolto e ambito consentito.
403.14 File e configurazione del documento predefinito; non abilitate esplorazione directory per aggirare il problema.
401.3 Identità anonima effettiva e permessi di lettura NTFS su cartella e file.
404 Percorso fisico, nome ed estensione del file; esaminate il sottostato prima di attribuire ogni 404 a un file mancante.
503 Stato del pool, protezione da errori rapidi ed eventi; non disabilitate la protezione per nascondere il guasto.

In Gestione IIS cercate l’ID sotto LabSite → Impostazioni avanzate e la posizione attiva in LabSite → Registrazione. Correlate client, URL e ora alla cartella C:\inetpub\logs\LogFiles\W3SVC seguita dall’ID del sito se è in uso quella posizione predefinita; controllate il fuso orario del formato di log. La diagnosi degli errori HTTP IIS distingue stato e sottostato. Una richiesta che non raggiunge IIS può non comparire nei suoi log. Separate guasti di rete e risposte HTTP. Per pulire conservate i log necessari, arrestate e rimuovete solo LabSite, controllate che LabSitePool non serva altre applicazioni e rimuovete soltanto quel pool e la nuova regola. Eliminate la cartella solo se contiene esclusivamente vostri file sacrificabili. Conservate sito predefinito, regole altrui e ruolo condiviso.