The page a web server shows on a fresh install, before anyone configures it - collected and made faithful across the two big lineages. IIS from 1995 to today, and the major Linux servers. Each half has its own detailed README; this is the index.
webserver-default-pages/
├── iis/ Microsoft IIS - Windows NT 3.51 (1995) through Windows Server 2022
│ ├── README.md (the modern era, 6.0 -> 10)
│ └── IIS-4.0-and-earlier-FINDINGS.md (4.0 and the lost 1.0-3.0 pages)
└── linux/ nginx, Apache, Caddy
└── README.md
| Folder | IIS | Windows | The page |
|---|---|---|---|
| (documented only) | 1.0-3.0 | NT 3.51 / NT 4.0 / NT4 SP3 | lost - see FINDINGS |
iis-4.0_nt4-optionpack |
4.0 | NT 4.0 Option Pack | "Welcome to IIS 4.0!" 3-tab site |
iis-5.x_win2000-xp |
5.0/5.1 | Win 2000 / XP Pro | iisstart.asp + localstart.asp ASP pair |
iis-6.0_server2003 |
6.0 | Server 2003 | "Under Construction" (reconstructed) |
iis-7.0_vista-server2008 |
7.0 | Vista / Server 2008 | blue "IIS7" splash |
iis-7.5_win7-server2008r2 |
7.5 | Win 7 / Server 2008 R2 | identical to 7.0 |
iis-8.0_win8-server2012 |
8.0 | Win 8 / Server 2012 | microsoft.com/web composited |
iis-8.5_win81-server2012r2 |
8.5 | Win 8.1 / Server 2012 R2 | single image on #0072C6 |
iis-10_win10-client |
10 | Windows 10 | "IIS Windows" |
iis-10_server2016plus |
10 | Server 2016 / 2019 / 2022 | "IIS Windows Server" |
There is no IIS 9 - Microsoft jumped 8.5 to 10 to line up with Windows 10.
| Folder | Server | The page |
|---|---|---|
nginx |
nginx (upstream / Debian) | "Welcome to nginx!" |
nginx-rhel |
nginx (RHEL / Fedora pkg) | "Welcome to nginx on Red Hat Enterprise Linux!" test page |
apache-itworks |
Apache HTTP Server (upstream) | "It works!" (a 45-byte one-liner) |
apache-ubuntu |
Apache (Debian / Ubuntu pkg) | "Apache2 Default Page" |
apache-rocky |
Apache (Rocky / EL9 pkg) | "HTTP Server Test Page ... Rocky Linux" |
caddy |
Caddy v2 | "Caddy works!" / the slanted "Congratulations!" page |
On Linux the "default page" is distro packaging, not the upstream project, which is why nginx and Apache each appear twice (plain upstream vs. the RHEL-family test page).
Reverse proxies, caches, and application servers - their default landing and error pages.
| Folder | Project | The page |
|---|---|---|
tomcat |
Apache Tomcat | "…successfully installed Tomcat. Congratulations!" ROOT page |
varnish |
Varnish Cache | the "Guru Meditation" 503 |
haproxy |
HAProxy | "503 Service Unavailable" |
squid |
Squid | "ERROR: The requested URL could not be retrieved" |
nginx-ingress |
Kubernetes ingress-nginx | "default backend - 404" |
envoy |
Envoy | "no healthy upstream" |
traefik |
Traefik (Go net/http) | "404 page not found" |
kong |
Kong Gateway | "no Route matched with those values" |
apisix |
Apache APISIX | "404 Route Not Found" |
tinyproxy |
Tinyproxy | error page ("Generated by tinyproxy") |
trafficserver |
Apache Traffic Server | "Could Not Connect" / "Error" |
openlitespeed |
OpenLiteSpeed | "Congratulations…installed OpenLiteSpeed" |
Web-framework scaffolds - the page a new app shows before you've written any of your own.
| Folder | Framework | The page |
|---|---|---|
django |
Django | "The install worked successfully! Congratulations!" (the rocket) |
rails |
Ruby on Rails | "Yay! You're on Rails!" |
flask |
Flask / Werkzeug | "404 Not Found" |
spring-boot |
Spring Boot | "Whitelabel Error Page" |
laravel |
Laravel | the default Tailwind welcome page |
express |
Express | "Cannot GET /" |
fastapi |
FastAPI | {"detail":"Not Found"} |
nextjs |
Next.js | "404 | This page could not be found" |
phoenix |
Phoenix | "Peace of mind from prototype to production" |
gin |
Gin (Go) | "404 page not found" |
echo |
Echo (Go) | {"message":"Not Found"} |
sinatra |
Sinatra | "Sinatra doesn't know this ditty." |
create-react-app |
Create React App | "Edit src/App.js and save to reload." |
go-nethttp |
Go net/http | "404 page not found" (with newline) |
python-http-server |
Python http.server | "Error response" |
astro |
Astro | "Welcome to Astro" |
aspnet-core |
ASP.NET Core | "Welcome" |
vue |
Vue | "You did it!" |
hono |
Hono | "404 Not Found" |
koa |
Koa | "Not Found" |
rocket |
Rocket (Rust) | "404: Not Found" |
codeigniter |
CodeIgniter | "Welcome to CodeIgniter 4!" |
cakephp |
CakePHP | "Welcome to CakePHP" |
slim |
Slim | "404 Not Found" |
spark |
Spark (Java) | "404 Not found" |
Almost everything here is byte-exact, pulled from a genuine source - a live server
still serving its stock default, a git/dist-git blob, a real distro package, or files
you supplied (the Ubuntu page, the XP localstart mirror). Two honest exceptions, both
labeled in place:
- IIS 6.0 - visible "Under Construction" text is verified; the surrounding markup is a period-accurate reconstruction (the original bytes weren't recoverable).
- IIS 1.0-3.0 - documented, not recreated. No trustworthy copy of those pages
survives;
IIS-4.0-and-earlier-FINDINGS.mdexplains what they were and why 4.0 is the oldest recoverable one.
The IIS 5.x localstart.asp deserves a note: it's genuine, but assembled from two
real captures - the ADSI/ASP header from a source-leaking box, and the body/CSS/JS from
an HTTrack mirror of a live XP machine - with the resolved template expressions
re-inserted. Details in iis/iis-5.x_win2000-xp/README.md.
- Line endings: IIS files are CRLF (Windows originals); Linux files are LF.
Byte counts on the IIS HTML match the live
Content-Lengths (e.g. 689 for 7.x, 703 for 10 Server). - Images are included where a page needs them (the XP GIFs,
ubuntu-logo.png, the nginx/Rockypoweredbybadges). A few still-external ones are noted per-folder. - Empty dirs: there are none. If you ever
mkdir {a,b,c}in a shell that doesn't do brace expansion (POSIXsh/dash) you'll create one literal{a,b,c}folder; clean any up withfind . -depth -type d -name '{*}' -empty -delete.
Other repositories that recreate or serve default / decoy web-server pages:
fake-iis(main) — by Aayush Sinha. A Dockerized decoy (OpenResty/nginx) that serves a pixel-perfect fake Microsoft IIS 8.0 site: spoofedServer/X-Powered-Byheaders and IIS-styled 403 / 404 / 500 pages. MIT-licensed; prebuilt image atghcr.io/aayusharyan/fake-iis.
Built to the TGWAB Dev Standards as a Class C micro-project — a public reference gallery on GitHub Pages, MIT, no custom domain.
- §4: one Actions workflow builds this site, not the platform's own build.
The gallery is generated, not authored:
gallery/build.mjsassembles the index andgallery/shoot.mjsscreenshots every entry with Playwright and headless Chromium. GitHub Pages' own build runs neither, so the platform build would publish an index with no screenshots behind it. There is exactly one workflow (pages.yml) and no second deploy path, which is what §4 binds; the platform-build preference is what is deviated from.
The collected pages here each remain © their respective owners and are included for
archival, educational, and identification purposes. The repository's own original work —
its structure, the README / NOTICE / SOURCES docs, any scripts, and the first-party
pages (ari-integration.com/, site-maintenance/) — is released under the
MIT License.
NOTICE.md— what the license does and doesn't cover, plus the trademark, logo, and government-seal caveats (the parts that are easy to forget).SOURCES.md— per-item origin map (live host / repo / package) and how faithful each copy is.