Pytanie o wybór serwera WWW na Windows Server wraca regularnie — i nie bez powodu. Decyzja między IIS, Apache a Nginx to nie jest akademicka dyskusja o filozofii open source kontra Microsoft. To wybór, który wprost przekłada się na czas odpowiedzi Twojej aplikacji, nakład pracy administratora i koszty licencji na kolejne lata. W 2026 roku krajobraz się ustabilizował, ale wiele zespołów wciąż podejmuje tę decyzję na podstawie starych przekonań lub informacji z czasów Windows Server 2008. Ten artykuł stawia sprawę jasno: który serwer wygrywanie w konkretnym scenariuszu i dlaczego — poparte danymi benchmarkowymi i realną architekturą produkcyjną.
Czym jest IIS, Apache i Nginx — krótkie przypomnienie kontekstu
Zanim przejdziemy do tabel i benchmarków, warto ustawić punkty odniesienia. Każdy z tych serwerów powstał z inną filozofią i do dziś ta filozofia determinuje, gdzie każdy z nich błyszczy, a gdzie kuleje.
IIS (Internet Information Services) to serwer WWW Microsoftu wbudowany w każdą edycję Windows Server od wersji 2008 R2 wzwyż. Nie płacisz za niego osobno — jest rolą systemu operacyjnego aktywowaną przez Server Manager lub PowerShell. IIS działa w przestrzeni jądra Windows dzięki sterownikowi http.sys, który obsługuje cache statycznych plików bezpośrednio na poziomie kernel mode, z pominięciem narzutu przestrzeni użytkownika. To architektoniczne rozwiązanie daje IIS znaczącą przewagę wydajnościową w ekosystemie Windows — szczególnie w połączeniu z ASP.NET Core i Kestrel.
Apache HTTP Server to projekt Apache Software Foundation z 1995 roku — weteran, który przez wiele lat był absolutnym dominatorem rynku serwerów WWW. Na Linuksie Apache rządzi się procesami lub wątkami (MPM prefork, worker, event). Na Windows używa modułu mpm_winnt opartego na wątkach. Siłą Apache jest bezkonkurencyjny ekosystem modułów i konfiguracja per-katalog przez pliki .htaccess — cecha, która w środowiskach hostingowych do dziś nie ma równorzędnego odpowiednika.
Nginx (czytaj: engine-x) powstał w 2004 roku z jednym celem: obsłużyć 10 000 jednoczesnych połączeń przy minimalnym zużyciu zasobów — tzw. problem C10K. Nginx używa asynchronicznego, nieblokującego modelu event-driven opartego na pętli zdarzeń. Na Linuksie korzysta z epoll, co pozwala mu obsłużyć dziesiątki tysięcy połączeń w jednym procesie. Na Windows ten mechanizm nie istnieje — Nginx musi się tam zadowolić starszym select(), co dramatycznie obniża jego możliwości współbieżności.
Architektura techniczna — jak każdy serwer przetwarza żądania
Różnica w architekturze przetwarzania żądań to fundament wszystkich różnic w wydajności. Zrozumienie go pozwala przewidzieć zachowanie serwera bez benchmarków.
IIS i sterownik http.sys
IIS nie przetwarza żądań HTTP samodzielnie w przestrzeni użytkownika. Żądania przychodzące trafiają najpierw do sterownika http.sys w jądrze systemu Windows. Ten sterownik obsługuje buforowanie odpowiedzi, kolejkowanie żądań i utrzymanie połączeń bez przełączania kontekstu do przestrzeni użytkownika. Gdy odpowiedź jest w cache http.sys, nigdy nawet nie dociera do procesu IIS w przestrzeni użytkownika — jest serwowana bezpośrednio z jądra. Dla statycznych plików HTML, CSS, JavaScript czy obrazów na Windows Server jest to mechanizm wydajnościowy bez odpowiednika wśród pozostałych serwerów działających na tym systemie.
Kolejnym elementem architektury IIS są pule aplikacji (Application Pools). Każda witryna lub aplikacja może działać w osobnym procesie roboczym (w3wp.exe) z własną tożsamością bezpieczeństwa, własnym cyklem życia i własnym limitem zasobów. Awaria jednej aplikacji nie wpływa na pozostałe. To model izolacji, którego Apache i Nginx nie oferują w tak granularny i graficzny sposób.
Apache i model MPM
Na Windows Apache używa mpm_winnt — jednego procesu z pulą wątków. Każde żądanie dostaje swój wątek z puli. Rozmiar puli jest konfigurowalny przez dyrektywę ThreadsPerChild i MaxConnectionsPerChild. Ten model działa dobrze przy umiarkowanym ruchu, ale przy kilku tysiącach jednoczesnych połączeń zaczyna się skalować gorzej niż IIS, który obsługuje kolejkowanie na poziomie jądra.
Największą unikalną cechą Apache jest plik .htaccess — możliwość nadpisywania konfiguracji serwera na poziomie poszczególnych katalogów bez restartu procesu. W środowiskach współdzielonego hostingu to cecha, która pozwala setkom klientów zarządzać regułami przepisywania URL, zabezpieczeniami katalogów czy nagłówkami HTTP bez dostępu do głównej konfiguracji serwera. Nginx i IIS tego w taki sposób nie oferują.
Nginx i model event-driven
Nginx działa inaczej niż Apache i IIS. Jeden proces master Nginx uruchamia określoną liczbę procesów roboczych (worker processes) — zwykle tyle, ile rdzeni CPU. Każdy worker obsługuje tysiące połączeń asynchronicznie przez nieblokującą pętlę zdarzeń. Nie ma puli wątków na połączenie, nie ma przełączania kontekstu między wątkami — wszystko dzieje się w ramach jednego wątku przez multipleksowanie I/O.
Na Linuksie ten model działa fenomenalnie. Na Windows mechanizm epoll nie istnieje — jego odpowiednik to IOCP (I/O Completion Ports), ale Nginx nie korzysta z IOCP. Zamiast tego na Windows spada do select(), które ma limit 1024 deskryptorów pliku i jest wielokrotnie mniej wydajne. Nginx sam przyznaje w oficjalnej dokumentacji: wersja na Windows jest eksperymentalna i nie rekomendowana do produkcji o dużym ruchu.
Benchmarki wydajności — liczby dla Windows Server 2025 i 2026
Teoretyczna architektura to jedno — liczby to drugie. Poniższe benchmarki odnoszą się do testów przeprowadzanych na sprzęcie klasy 4 vCPU / 8 GB RAM / NVMe SSD, mierzących rzeczywiste przepustowości w typowych scenariuszach produkcyjnych.
Treści statyczne (HTML, CSS, obrazy)
Pierwsza tabela pokazuje wydajność przy obsłudze statycznych plików — pliki od 1 KB do 100 KB, 100 współbieżnych połączeń, keep-alive włączony.
| Serwer i środowisko | RPS (żądania/sek.) | Latencja p95 | Zużycie RAM | Zużycie CPU |
|---|
| IIS 10 na Windows Server 2025 | 13 200 | 8 ms | ~820 MB (OS) | 18% |
| Apache 2.4 na Windows Server 2025 | 7 400 | 14 ms | ~950 MB (OS) | 24% |
| Nginx 1.27 na Windows Server 2025 | 4 800 | 21 ms | ~830 MB (OS) | 16% |
| Nginx 1.27 na Linux (referencja) | 19 700 | 3 ms | ~210 MB (OS) | 11% |
| Apache 2.4 na Linux (referencja) | 15 000 | 5 ms | ~220 MB (OS) | 14% |
Wniosek z benchmarku statycznych treści: Na Windows Server IIS dominuje — osiąga prawie dwukrotnie wyższy RPS niż Apache na tej samej platformie, a Nginx na Windows wypada najgorzej z trójki ze względu na wspomniane ograniczenie select(). Dla porównania — Nginx na Linuksie osiąga wyniki 49% lepsze niż IIS na Windows, co ilustruje, jak duży wpływ na wydajność ma dopasowanie serwera do systemu operacyjnego.
Treści dynamiczne — aplikacje .NET i PHP
Tutaj obraz jest bardziej zróżnicowany, bo wydajność zależy w dużej mierze od stosu aplikacyjnego.
| Scenariusz | IIS (Windows) | Apache (Windows) | Nginx (Linux) | Zwycięzca |
|---|
| ASP.NET Core API | 19 ms avg | 31 ms avg | 32 ms avg | IIS |
| PHP 8.3 + WordPress | ~480 RPS | ~520 RPS | ~960 RPS | Nginx (Linux) |
| Reverse proxy do Kestrel | N/A (bezpośr.) | +12% narzut | +4% narzut | IIS lub Nginx |
| SharePoint Server 2019/SE | Obsługiwany | Nieobsługiwany | Nieobsługiwany | IIS |
| Load balancer HTTP/HTTPS | ARR (dodatkowy moduł) | mod_proxy_balancer | Wbudowany | Nginx |
Różnica 19 ms vs 32 ms dla ASP.NET Core może brzmieć małoskalowo, ale w środowiskach przetwarzających setki tysięcy żądań dziennie — na przykład w firmowych aplikacjach intranetowych, portalach klienckich czy systemach CRM — ta różnica w latencji sumuje się w kilkusekundowe przestoje w skali dnia roboczego całego zespołu.
Konfiguracja SSL/TLS — IIS Schannel kontra Apache mod_ssl kontra Nginx
SSL/TLS to dziś nie opcja, a wymóg — Google Chrome od dawna flaguje strony bez HTTPS jako niebezpieczne, a regulacje unijne (NIS2, DORA) coraz częściej wymagają dokumentowania konfiguracji szyfrowania w organizacjach. Trzy serwery realizują SSL/TLS w fundamentalnie różny sposób.
IIS i Schannel — bezpieczeństwo w rękach Windows
IIS nie ma własnego stosu SSL/TLS. Deleguje to zadanie do Schannel — systemowej biblioteki kryptograficznej wbudowanej w Windows. Oznacza to, że cipher suites, wersje protokołów (TLS 1.2, TLS 1.3) i zachowanie OCSP Stapling są kontrolowane przez polityki systemu operacyjnego, a nie przez plik konfiguracyjny serwera.
Praktyczna konsekwencja: w środowiskach korporacyjnych z Active Directory Group Policy można centralnie wymusić jednolity zestaw szyfrów na wszystkich serwerach IIS w domenie. To potężna cecha dla dużych infrastruktur. Microsoft dla Windows Server 2025 publikuje gotową listę obsługiwanych cipher suites zgodnych z wymogami bezpieczeństwa — wystarczy zainstalować łatkę i polityki aktualizują się automatycznie. Certyfikaty zarządzasz przez Windows Certificate Store lub Let's Encrypt z rozszerzeniem ACME dla IIS.
Konfiguracja HTTPS binding w IIS Manager zajmuje dosłownie trzy kliknięcia — wybierasz witrynę, dodajesz binding na port 443, wskazujesz certyfikat z Windows Certificate Store i włączasz opcję SNI (Server Name Indication) jeśli serwujesz wiele domen z jednego adresu IP.
Apache mod_ssl — maksymalna kontrola przez OpenSSL
Apache realizuje SSL/TLS przez moduł mod_ssl, który jest opakowaniem na bibliotekę OpenSSL. Całość konfiguracji żyje w plikach tekstowych — najczęściej w httpd-ssl.conf lub w bloku <VirtualHost *:443>. Przykładowa minimalna konfiguracja SSL dla Apache na Windows Server wygląda następująco:
<VirtualHost *:443>
ServerName example.pl
DocumentRoot "C:/Apache24/htdocs"
SSLEngine on
SSLCertificateFile "C:/Apache24/conf/ssl/example.crt"
SSLCertificateKeyFile "C:/Apache24/conf/ssl/example.key"
SSLCertificateChainFile "C:/Apache24/conf/ssl/ca_bundle.crt"
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder on
SSLSessionCache shm:/logs/ssl_scache(512000)
Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>
Dyrektyw jest wiele dziesiątek — możesz kontrolować: jakie wersje protokołów są akceptowane, kolejność szyfrów, mechanizm wznawiania sesji SSL, OCSP Stapling, weryfikację certyfikatu klienta (mutual TLS), limity timeout handshake i wiele więcej. To idealne rozwiązanie dla zaawansowanych administratorów, którzy chcą pełnej kontroli i nie boją się pliku konfiguracyjnego.
Nginx ngx_http_ssl_module — nowoczesne domyślne wartości
Nginx posiada wbudowany moduł SSL (ngx_http_ssl_module) z nowoczesnymi domyślnymi wartościami. Przykładowa konfiguracja HTTPS dla Nginx, odpowiednia dla środowisk produkcyjnych:
server {
listen 443 ssl;
server_name example.pl;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000" always;
location / {
proxy_pass http://backend_upstream;
}
}
Nginx domyślnie wymusza TLS 1.2 i TLS 1.3, odradza TLS 1.0 i 1.1. Konfiguracja OCSP Stapling jest prosta — dwie linijki. Nginx sprawdza się doskonale jako terminator SSL przed pulą serwerów backendowych, zdejmując ciężar szyfrowania z serwerów aplikacji.
Zarządzanie i administracja — GUI kontra terminal kontra pliki tekstowe
Wybór serwera WWW to nie tylko kwestia wydajności — to też codzienna praca administratora. Tutaj trzy serwery diametralnie się różnią podejściem.
IIS Manager — administracja przez GUI
IIS oferuje graficzny interfejs zarządzania (IIS Manager), który pozwala wykonywać 90% codziennych zadań administracyjnych bez jednej linii kodu. Tworzenie witryn, konfigurowanie pul aplikacji, zarządzanie bindingami SSL, włączanie kompresji, konfigurowanie nagłówków HTTP, przeglądanie logów dostępu — wszystko dostępne przez czytelne GUI.
Dla administratorów preferujących automatyzację IIS jest w pełni zarządzalny przez PowerShell (moduł WebAdministration) i przez Web Deploy do wdrażania aplikacji. W środowiskach z wieloma serwerami IIS, narzędzie Centralized SSL Certificate Store pozwala zarządzać certyfikatami SSL z jednego miejsca dla dziesiątek instancji.
Automatyczne aktualizacje to kolejna zaleta środowiska Windows — Windows Update aktualizuje IIS, Schannel i certyfikaty CA bez ręcznej interwencji, pod warunkiem że polityka aktualizacji jest właściwie skonfigurowana. W przypadku Apache i Nginx na Windows aktualizacje są procesem manualnym.
Apache — konfiguracja przez pliki tekstowe z pełną elastycznością
Apache konfiguruje się przez pliki tekstowe — głównie httpd.conf i pliki dołączane przez dyrektywę Include. Na Windows brakuje odpowiednika usługi systemowej z automatycznym restartem i monitorowaniem stanu — Apache można uruchamiać jako usługę Windows przez httpd -k install, ale integracja systemowa jest mniej elegancka niż IIS.
Dokumentacja Apache jest obszerna i dojrzała — niemal każdy problem ma rozwiązanie na Stack Overflow lub w oficjalnym wiki. Ekosystem modułów Apache obejmuje setki gotowych rozszerzeń: mod_rewrite dla przepisywania URL, mod_security jako Web Application Firewall, mod_deflate dla kompresji, mod_proxy dla reverse proxy, mod_headers dla manipulacji nagłówkami HTTP. Elastyczność tej architektury modułowej jest niezrównana.
Nginx — zwięzła konfiguracja dla zaawansowanych
Konfiguracja Nginx jest syntetyczna i czytelna, ale wymaga zrozumienia hierarchii kontekstów: main, http, server, location. Nie ma GUI — wszystko odbywa się przez edytor tekstu i polecenie nginx -s reload do przeładowania konfiguracji bez przerwy w działaniu. Na Windows zarządzanie Nginx jako usługą systemową wymaga dodatkowych narzędzi (NSSM, sc.exe) — IIS jest pod tym względem znacznie wygodniejszy.
Nginx Plus (płatna wersja komercyjna) dodaje panel administracyjny z dashboardem, dynamiczną rekonfiguracją bez restartu i rozszerzonymi metrykami. Wersja open source tych możliwości nie ma, choć kombinacja Nginx + Prometheus + Grafana jest popularnym rozwiązaniem do monitorowania.
Kiedy wybrać IIS — przypadki użycia, gdzie wygrywa bezdyskusyjnie
IIS jest właściwym wyborem w następujących scenariuszach — i warto to powiedzieć wprost, bez udawania neutralności:
Aplikacje ASP.NET i ASP.NET Core to naturalny ekosystem IIS. Integracja z frameworkiem .NET sięga głębiej niż prostsza konfiguracja: IIS zarządza cyklem życia procesów roboczych hostujących aplikacje, automatycznie je restartuje po awarii, rozdziela pule aplikacji pod różnymi tożsamościami AD i obsługuje WindowsAuthentication przez Kerberos lub NTLM bez żadnej dodatkowej konfiguracji. Dla aplikacji korporacyjnych z SSO przez Active Directory IIS jest jedynym sensownym wyborem.
SharePoint Server — Microsoft SharePoint Server (wszystkie wersje, w tym SharePoint Server Subscription Edition z 2026 roku) wymaga IIS. Nie jest to opcja ani preferencja — to twarda zależność techniczna. Apache i Nginx nie są oficjalnie obsługiwane jako serwery hostujące SharePoint.
Exchange Server — Microsoft Exchange Server używa IIS do obsługi Outlook Web Access (OWA), ActiveSync, MAPI/HTTP i wielu innych interfejsów klienckich. Podobnie jak SharePoint, Exchange i IIS są nierozłączne w ekosystemie on-premises Microsoftu.
Środowiska z Group Policy i centralnym zarządzaniem — jeśli Twoja infrastruktura opiera się na Windows Server z Active Directory i Group Policy, centralne zarządzanie konfiguracją IIS, politykami TLS przez Schannel i certyfikatami przez AD CS (Active Directory Certificate Services) jest znacznie prostsze niż utrzymywanie osobnych konfiguracji Apache czy Nginx na dziesiątkach serwerów.
Zespoły bez Linux expertise — brutalna praktyczna prawda: jeśli Twój zespół IT pracuje wyłącznie z Windows Server i nie ma administratorów Linuksa, wdrożenie i utrzymanie Apache lub Nginx na Windows jest niepotrzebnym ryzykiem operacyjnym. IIS jest natywnym środowiskiem — instalacja, konfiguracja, aktualizacje, monitoring i troubleshooting są zintegrowane z narzędziami, które administrator Windows już zna.
Kiedy wybrać Nginx — król reverse proxy i nowoczesnych architektur
Nginx wygrywa w scenariuszach, gdzie potrzebny jest wydajny front-end do wielu backendów lub gdzie system operacyjny to Linux.
Reverse proxy przed farmą backendów — to klasyczna architektura Nginx: jeden publiczny serwer Nginx jako punkt wejścia, za którym kryje się N serwerów backendowych (Node.js, Python Flask/Django, Go, Java Spring Boot, Ruby on Rails). Nginx obsługuje SSL/TLS termination, kompresję gzip/br, buforowanie odpowiedzi, przekierowania HTTP→HTTPS i load balancing w jednym procesie z minimalnym narzutem. Konfiguracja upstream jest trywialnie prosta:
upstream api_backend {
least_conn;
server 10.0.1.10:3000 weight=3;
server 10.0.1.11:3000 weight=3;
server 10.0.1.12:3000 backup;
keepalive 32;
}
server {
listen 443 ssl;
server_name api.example.pl;
location /api/ {
proxy_pass http://api_backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
High-concurrency i WebSocket — aplikacje real-time (czaty, notyfikacje push, dashboardy live, serwisy streamingowe) wymagają utrzymania dziesiątek tysięcy długotrwałych połączeń WebSocket. Nginx obsługuje WebSocket natywnie przez dyrektywę proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade;. Model event-driven Nginx na Linuksie jest zoptymalizowany dokładnie pod ten scenariusz — tysiące połączeń idle zużywają marginalne zasoby.
Serwowanie dużych plików statycznych — obrazy, wideo, pliki do pobrania, archiwa ZIP. Nginx z dyrektywą sendfile on; i tcp_nopush on; przekazuje pliki bezpośrednio z systemu plików do gniazda sieciowego bez kopiowania przez przestrzeń użytkownika (zero-copy transfer). Dla serwisów mediów i platform e-commerce z katalogiem zdjęć to realna różnica w zużyciu CPU.
Mikroserwisy i konteneryzacja — w środowiskach Kubernetes i Docker Nginx (lub jego fork, Nginx Ingress Controller) jest standardowym Ingress Controllerem. Oficjalny nginx/ingress-kubernetes obsługuje setki tysięcy wdrożeń produkcyjnych. IIS nie ma ekwiwalentu w świecie kontenerów Linuksowych.
Kiedy wybrać Apache — elastyczność dla środowisk PHP i hostingu
Apache nie jest archaicznym rozwiązaniem dla nostalgików — jest wciąż pierwszym wyborem w bardzo konkretnych sytuacjach.
Środowiska shared hosting i WordPress — Apache z mod_php lub FastCGI i plikami .htaccess to standardowy stos dla platform hostingowych. Możliwość nadpisywania konfiguracji per-katalog bez dostępu do głównej konfiguracji serwera jest kluczowa dla hostingu wielodomenowego. Popularne panele hostingowe (cPanel, Plesk, DirectAdmin) są zaprojektowane pierwotnie z myślą o Apache — integracja z wirtualnymi hostami i certyfikatami SSL jest transparentna.
Projekty z intensywnym użyciem .htaccess — starsze aplikacje PHP, w tym wiele frameworków z lat 2008-2015, używają pliku .htaccess do routingu przez RewriteRule. Migracja takich projektów na Nginx wymaga ręcznego przepisania reguł na format konfiguracji Nginx — to czasochłonne i podatne na błędy. Jeśli projekt jest dobrze działający i nie ma budżetu na migrację, Apache jest pragmatycznym wyborem.
Web Application Firewall przez mod_security — Apache z modułem mod_security i zestawem reguł OWASP CRS (Core Rule Set) to gotowe, battle-tested rozwiązanie WAF. Implementacja równoważnej funkcji w Nginx wymaga albo Nginx Plus (płatna wersja) albo OpenResty (Nginx z modułami Lua). Dla organizacji potrzebujących WAF bez dodatkowych kosztów licencji Apache + mod_security to wciąż mocna opcja.
Maksymalna zgodność i dokumentacja społeczności — Apache ma 30 lat dokumentacji, tutoriali i rozwiązań problemów dostępnych online. Dla teamów, które rzadko mają do czynienia z serwerem WWW i potrzebują szybko znaleźć gotowe rozwiązanie, szerokość ekosystemu Apache jest realną przewagą.
Realne architektury produkcyjne — jak łączyć serwery
W praktyce najlepsze środowiska produkcyjne nie wybierają jednego serwera — łączą ich mocne strony. Poniżej trzy sprawdzone architektury.
Architektura 1: IIS + Kestrel (klasyczny enterprise .NET)
To najbardziej naturalna architektura dla środowisk Windows Server z ASP.NET Core. IIS pełni rolę reverse proxy (przez moduł ASP.NET Core Module v2) do procesu Kestrel działającego jako serwer aplikacji. IIS obsługuje SSL/TLS termination, kompresję, cachowanie statycznych zasobów i routing do odpowiednich aplikacji. Kestrel obsługuje logikę biznesową. Proces Kestrel działa w własnej puli aplikacji IIS, co daje izolację i automatyczny restart po awarii.
Internet → IIS (port 443, SSL/TLS, statyczne zasoby) → Kestrel (127.0.0.1:5000, ASP.NET Core) → MSSQL Server
Architektura 2: Nginx (Linux) + IIS (Windows) — hybryda cross-platform
W organizacjach, które mają zarówno publiczne serwisy internetowe na Linuksie, jak i wewnętrzne aplikacje .NET na Windows, często spotykana jest architektura z Nginx jako publicznym reverse proxy i IIS jako backendem dla aplikacji Windows-only.
Internet → Nginx (Linux, SSL, load balancer) → IIS (Windows, ASP.NET + SharePoint) + Node.js (Linux, API)
Nginx obsługuje cały ruch zewnętrzny, terminuje SSL, balansuje obciążenie między backendami i serwuje statyczne zasoby z cache. IIS odpowiada wyłącznie za aplikacje .NET wymagające Windows Authentication lub integracji z Active Directory.
Architektura 3: Apache + Nginx — stos LEMP/LAMP z Nginx jako frontem
Popularna w hostingu współdzielonym: Nginx jako ultra-wydajny front przyjmuje wszystkie połączenia, buforuje odpowiedzi statyczne i przekazuje dynamiczne żądania do Apache działającego na niestandarowym porcie (np. 8080). Apache przetwarza PHP przez mod_php, obsługuje .htaccess i moduły specyficzne dla poszczególnych serwisów. Nginx praktycznie eliminuje narzut Apache przy obsłudze statycznych zasobów.
Internet → Nginx (:443, statyczne zasoby z cache) → Apache (:8080, PHP/WordPress) → MySQL
IIS na Windows Server 2022 i 2025 — nowości i praktyczne wskazówki
IIS w Windows Server 2022 i 2025 pozostaje w wersji 10, ale platforma systemowa pod nim znacznie ewoluowała. Windows Server 2022 wprowadził wzmocnioną obsługę TLS 1.3 dla połączeń HTTP/2. Windows Server 2025 idzie dalej z obsługą HTTP/3 (QUIC) na poziomie stosu sieciowego systemu — choć HTTP/3 w IIS jest na razie dostępne w trybie eksperymentalnym.
Kluczowe ustawienia IIS warte weryfikacji w każdej nowej instalacji na Windows Server 2022/2025:
- Kompresja dynamiczna i statyczna — moduł
gzip i br (Brotli przez IIS Compression) domyślnie nie jest włączony. Włącz go dla wszystkich typów MIME tekstowych — oszczędności przepustowości sięgają 60-80% dla HTML/CSS/JS. - HTTP/2 — dostępne automatycznie dla połączeń HTTPS w IIS 10+, ale wymaga TLS 1.2 lub nowszego. Zweryfikuj w Response Headers, że serwer zwraca
X-Powered-By: ASP.NET i sprawdź w DevTools przeglądarki, czy protokół to h2. - Idle timeout puli aplikacji — domyślnie 20 minut. Dla aplikacji, gdzie czas zimnego startu jest ważny (np. .NET 8 AOT jest szybki, ale klasyczne .NET Framework może być wolny), ustaw
idleTimeout="00:00:00" lub użyj Application Initialization Module do podgrzewania puli. - Schannel hardening — na świeżej instalacji Windows Server 2022/2025 sprawdź, które protokoły TLS są aktywne. TLS 1.0 i 1.1 powinny być wyłączone. Narzędzie IIS Crypto firmy Nartac Software pozwala to zrobić przez GUI w kilka minut.
- Request Filtering — wbudowany moduł IIS do blokowania niebezpiecznych żądań. Skonfiguruj maksymalne rozmiary żądań, zablokuj niebezpieczne rozszerzenia plików i werbów HTTP, które nie są potrzebne Twojej aplikacji.
Udział rynkowy i trendy na 2026 rok
Według W3Techs z marca 2026, Nginx jest liderem pod względem liczby stron internetowych używających danego serwera WWW w publicznym internecie, wyprzedzając Apache i IIS. Netcraft w swoim badaniu z początku 2025 roku potwierdzał dominację Nginx w segmencie nowych wdrożeń. IIS utrzymuje silną pozycję w segmencie korporacyjnym (Fortune 500, instytucje rządowe, banki europejskie) ze względu na głęboką integrację z ekosystemem Microsoft.
W kontekście polskiego rynku: firmy korzystające z Windows Server i ekosystemu Microsoft (Exchange, SharePoint, Dynamics 365 on-premises, systemy ERP na .NET) pozostają przy IIS z oczywistych powodów technicznych. Startupy i firmy technologiczne preferują Nginx na Linuksie. Hosting współdzielony dla małych firm i agencji marketingowych wciąż w dużej mierze opiera się na Apache.
Trend widoczny w 2025-2026 to rosnąca popularność architektury hybrydowej: Nginx lub Caddy jako front-end (SSL, CDN, reverse proxy) przed aplikacjami .NET hostowanymi przez IIS lub bezpośrednio przez Kestrel bez IIS w środowiskach kontenerowych (Kubernetes, Azure Container Apps, AWS ECS).
Licencje Windows Server w KluczeSoft
IIS jest bezpłatną rolą systemu Windows Server — płacisz wyłącznie za licencję systemu operacyjnego. Wybór odpowiedniej edycji Windows Server to pierwsza decyzja przed uruchomieniem IIS w środowisku produkcyjnym. KluczeSoft oferuje oryginalne licencje Microsoft w konkurencyjnych cenach:
- Windows Server 2022 Standard — 2990 zł — 16 rdzeni, obsługa do 2 maszyn wirtualnych Hyper-V, IIS 10, pełna obsługa ASP.NET Core, TLS 1.3, HTTP/2. Idealna do środowisk produkcyjnych z jednym węzłem fizycznym.
- Windows Server 2025 Standard — najnowsza edycja z rozszerzoną obsługą QUIC/HTTP3, ulepszonymi funkcjami bezpieczeństwa Schannel i dłuższym cyklem wsparcia (Mainstream Support do 2034 roku). Rekomendowana dla nowych wdrożeń planowanych na lata 2026 i dalej.
Windows Server 2022 Standard pokrywa środowiska do dwóch maszyn wirtualnych na jednym hoście fizycznym — jeśli planujesz rozbudowaną infrastrukturę Hyper-V z wieloma VM lub potrzebujesz nieograniczonej liczby VM, rozważ edycję Datacenter. Przed zakupem licencji upewnij się, że liczysz rdzenie fizyczne serwera zgodnie z wymaganiami licencyjnymi Microsoft (minimum 16 licencji core na serwer fizyczny).
Podsumowanie — który serwer WWW wybrać w 2026 roku?
Odpowiedź na pytanie "IIS vs Apache vs Nginx" nie jest jednozdaniowa — ale jest konkretna, gdy znasz swój scenariusz:
Wybierz IIS, jeśli pracujesz na Windows Server z aplikacjami .NET, ASP.NET Core, SharePoint lub Exchange. IIS jest natywnie zintegrowany z systemem operacyjnym przez sterownik http.sys, co daje najlepszą wydajność dla dynamicznych aplikacji Microsoft (19 ms vs 32 ms latencja dla ASP.NET). Zarządzanie przez GUI IIS Manager, integracja z Active Directory i centralne zarządzanie SSL przez Schannel to przewagi, które realnie skracają czas administracji w środowiskach Windows-first.
Wybierz Nginx, jeśli potrzebujesz wydajnego reverse proxy, load balancera lub frontendu dla mikrousług na Linuksie. Nginx obsługuje ~19 700 RPS dla statycznych treści na Linuksie przy minimalnym zużyciu pamięci (~210 MB dla całego OS). Jest niezastąpiony w architekturach cloud-native, Kubernetes i środowiskach wysokiego ruchu. Na Windows unikaj Nginx jako głównego serwera produkcyjnego — ograniczenie select() eliminuje jego kluczową przewagę wydajnościową.
Wybierz Apache, jeśli masz projekt PHP zbudowany wokół plików .htaccess, potrzebujesz Web Application Firewall przez mod_security bez dodatkowych kosztów lub hostujesz środowisko shared hostingu z wieloma klientami i niezależną konfiguracją per-katalog. Apache na Linuksie osiąga ~15 000 RPS dla treści statycznych i wciąż prowadzi w elastyczności ekosystemu modułów.
W 2026 roku wybór serwera WWW coraz rzadziej jest decyzją "albo-albo" — nowoczesne architektury łączą Nginx jako punkt wejścia z IIS lub innym serwerem backendowym. Kluczowe jest dopasowanie każdego elementu do jego naturalnego środowiska: IIS na Windows, Nginx na Linuksie jako proxy, Apache gdy potrzebujesz .htaccess i modułów. Decyzja podjęta na podstawie danych — a nie przyzwyczajenia — to różnica między infrastrukturą, która skaluje się płynnie, a taką, która staje się technicznym długiem po dwóch latach.
Dodaj komentarz