IIS là gì? Cơ chế hoạt động và hướng dẫn cài đặt

IIS (Internet Information Services) là web server do Microsoft phát triển cho Windows và Windows Server. Nhiều đội kỹ thuật đánh giá IIS như một web server “chung”, rồi so hiệu năng thuần túy với Apache hay Nginx. Cách so đó bỏ lỡ điểm quan trọng nhất. IIS được thiết kế để chạy tốt nhất […]

IIS là gì? Cơ chế hoạt động và hướng dẫn cài đặt

Nội dung bài viết

Hosting side banner

IIS (Internet Information Services) là web server do Microsoft phát triển cho Windows và Windows Server. Nhiều đội kỹ thuật đánh giá IIS như một web server “chung”, rồi so hiệu năng thuần túy với Apache hay Nginx. Cách so đó bỏ lỡ điểm quan trọng nhất. IIS được thiết kế để chạy tốt nhất trong hệ sinh thái Windows Server, ASP.NET và Active Directory (dịch vụ quản lý tài khoản và phân quyền của Microsoft), không phải để cạnh tranh hiệu năng thuần trên mọi hạ tầng. 

Theo W3Techs (dữ liệu tháng 7/2026), IIS hiện chỉ chiếm khoảng 3,1% thị phần web server toàn cầu và tiếp tục giảm, vì phần lớn thị trường web server là Linux. Con số đó không có nghĩa IIS kém. Nó cho thấy IIS phục vụ một ngách cụ thể: hệ thống đã sống trong hạ tầng Microsoft. Bài này giải thích cơ chế hoạt động của IIS, so sánh với Apache/Nginx theo đúng ngữ cảnh đó, và hướng dẫn cài đặt cơ bản.

Contents

IIS là gì?

Như đã giải thích ở trên, IIS là viết tắt của Internet Information Services, web server do Microsoft phát triển và cung cấp dưới dạng Windows Feature (trên máy trạm) hoặc Server Role (trên Windows Server). Nhiệm vụ chính của IIS gồm: nhận HTTP/HTTPS request, phục vụ file tĩnh, chuyển request đến ứng dụng web, quản lý website/domain/port/SSL, và xử lý authentication (xác thực người dùng), authorization (phân quyền truy cập) cùng logging (ghi log).

IIS không phải công cụ viết code, không phải dịch vụ hosting, cũng không phải hệ điều hành. Nó là lớp trung gian, nhận request từ Internet hoặc mạng nội bộ rồi giao cho đúng ứng dụng xử lý. IIS tích hợp tốt với Windows Server, ASP.NET Framework, ASP.NET Core, Active Directory và PowerShell (công cụ dòng lệnh quản trị của Windows). Vì vậy phần lớn giá trị của IIS nằm ở mức độ gắn kết với các thành phần này, không phải ở việc phục vụ HTTP thuần túy nhanh hơn đối thủ.

Điểm hay bị hiểu sai: IIS không chỉ chạy được ASP.NET. Khi cấu hình đúng module, IIS vẫn phục vụ được static content, API hoặc tích hợp với runtime khác. Nhưng cấu hình đó là công việc bổ sung, trong khi với ASP.NET, mọi thứ đã sẵn sàng gần như ngay khi cài đặt. Đó là lý do IIS thường xuất hiện mặc định trong hệ thống .NET, chứ hiếm khi được chọn cho một stack hoàn toàn Linux/PHP.

IIS được dùng để làm gì?

Tình huống sử dụng IIS gần như luôn xoay quanh một điều kiện: hệ thống đã hoặc sẽ chạy trên Windows Server. Ngoài điều kiện đó, các lựa chọn khác thường được cân nhắc trước.

Triển khai website và ứng dụng .NET

IIS phục vụ website ASP.NET Framework, ứng dụng ASP.NET Core, REST API (giao diện lập trình cho ứng dụng khác gọi vào), portal doanh nghiệp, website thương mại điện tử và backend service chạy trên Windows Server. Đây là nhóm tình huống IIS mạnh nhất. Runtime .NET và IIS được Microsoft phát triển song song, nên tích hợp sẵn mà không cần cấu hình thêm nhiều.

Vận hành intranet và ứng dụng nội bộ

Cổng thông tin nội bộ, CRM, ERP, dashboard, hệ thống nhân sự và ứng dụng quản lý tài liệu là nhóm tình huống thứ hai. Với intranet, IIS tích hợp Windows Authentication (cơ chế xác thực bằng tài khoản Windows có sẵn) và phân quyền theo user hoặc group trong Active Directory. Nhờ vậy nhân viên đăng nhập bằng tài khoản domain có sẵn, không cần hệ thống tài khoản riêng.

Hosting nhiều website trên cùng một máy chủ

Mỗi website trên IIS có Binding riêng, có thể phân biệt bằng domain, subdomain hoặc port khác nhau. Mỗi ứng dụng chạy trong một Application Pool riêng, nên khi một ứng dụng gặp sự cố, các ứng dụng khác trên cùng máy vẫn tiếp tục chạy. Đây là cơ chế cô lập, không phải tính năng phụ. Nó là lý do IIS xử lý tốt việc gộp nhiều ứng dụng nội bộ lên một máy chủ.

Phục vụ static content, API và reverse proxy

IIS phục vụ HTML, CSS, JavaScript, hình ảnh và REST API, đồng thời có thể proxy request tới ứng dụng backend (chuyển tiếp request sang một server phía sau, cơ chế gọi là reverse proxy) khi cài thêm module như Application Request Routing (module định tuyến request của Microsoft). Tuy nhiên đây không phải thế mạnh chính của IIS so với Nginx, vốn được thiết kế riêng cho reverse proxy và static content với chi phí tài nguyên thấp hơn.

Cung cấp FTP hoặc FTPS

IIS có thể cung cấp dịch vụ FTP/FTPS khi cài thêm FTP Server Role, nhưng đây không phải chức năng mặc định của toàn bộ cài đặt IIS. Không nên nhầm việc bật IIS đồng nghĩa với có sẵn FTP.

IIS hoạt động như thế nào?

Một request tới IIS đi qua năm bước: trình duyệt gửi HTTP/HTTPS request, HTTP.sys tiếp nhận, Binding xác định website, Application Pool xử lý qua Worker Process, rồi IIS trả response về trình duyệt. Trong năm bước này, bước Application Pool là nơi tạo ra khác biệt vận hành thực sự so với các web server khác.

Năm bước xử lý một request trong IIS, từ HTTP.sys tiếp nhận đến Binding, Application Pool, Worker Process và trả response

Bước 1. HTTP.sys tiếp nhận request

HTTP.sys là HTTP listener (thành phần lắng nghe và tiếp nhận kết nối HTTP) hoạt động ở Kernel Mode, tức lớp lõi của hệ điều hành Windows có quyền truy cập phần cứng trực tiếp. Nó tiếp nhận mọi request gửi đến server rồi đưa vào hàng đợi (queue) tương ứng, trước khi chuyển đến tiến trình ứng dụng. Việc xử lý ở Kernel Mode giúp IIS tiếp nhận kết nối hiệu quả mà không cần mỗi ứng dụng tự lo quản lý hàng đợi request.

Bước 2. Binding xác định website

IIS dùng Binding để tìm website phù hợp dựa trên giao thức (HTTP hoặc HTTPS), địa chỉ IP, port và host name. Ví dụ một Binding cụ thể: giao thức HTTPS, port 443, host name example.com. Nếu nhiều website dùng chung một IP, IIS phân biệt chúng bằng host name hoặc port khác nhau.

Bước 3. Request được chuyển đến Application Pool

Mỗi website hoặc ứng dụng được liên kết với một Application Pool, và pool tạo môi trường chạy riêng cho ứng dụng đó. Mỗi pool có identity (tài khoản chạy tiến trình) riêng, runtime riêng, cấu hình recycling (khởi động lại định kỳ) riêng và giới hạn tài nguyên riêng. Đây chính là cơ chế cô lập nhắc ở phần tình huống sử dụng: một pool gặp lỗi không kéo theo pool khác.

Bước 4. Worker Process xử lý request

Worker Process là tiến trình thực thi request bên trong Application Pool, thường mang tên tiến trình w3wp.exe. Request đi qua HTTP pipeline (chuỗi các bước xử lý tuần tự), trong đó Module (thành phần tham gia từng giai đoạn xử lý) và Handler (thành phần xử lý một loại request cụ thể) tham gia vào authentication, authorization, request filtering và compression. Static content có thể được trả trực tiếp, còn dynamic request được chuyển tới framework hoặc runtime ứng dụng.

Một quy tắc vận hành đáng lưu ý: nên đặt số worker process tối đa qua cấu hình Web Garden (cơ chế cho phép một Application Pool chạy nhiều worker process song song) tương ứng với số CPU core của server. Đây là khuyến nghị trong hướng dẫn cấu hình IIS Application Pool của CLIMB. Đặt cao hơn không giúp xử lý nhanh hơn, chỉ tạo thêm tranh chấp tài nguyên giữa các tiến trình.

Bước 5. IIS trả response và ghi log

IIS trả status code, header và response body về client. Nếu logging được bật, IIS ghi lại URL, HTTP method, status code, client IP, response time và user agent. Log này là nguồn dữ liệu chính khi troubleshooting lỗi 401, 403 hoặc 500.19 nhắc ở phần cài đặt bên dưới.

Các thành phần quan trọng trong IIS

Bảng dưới tóm tắt các thành phần cấu hình IIS theo vai trò, không lặp lại luồng request đã nêu ở trên:

Thành phần

Vai trò

IIS Manager

Giao diện quản trị IIS

Website

Đơn vị cấu hình đại diện cho một website

Application

Ứng dụng nằm trong website

Virtual Directory

Ánh xạ URL đến một thư mục vật lý

Binding

Xác định website theo protocol, IP, port và hostname

Application Pool

Cô lập môi trường chạy của ứng dụng

Worker Process

Tiến trình xử lý request

w3wp.exe

Tên tiến trình thường thấy của IIS Worker Process

web.config

File cấu hình website hoặc ứng dụng

Module

Thành phần tham gia từng giai đoạn trong HTTP pipeline

Handler

Thành phần xử lý một loại request cụ thể

Log

Ghi lại request và kết quả xử lý

Trong số này, ba khái niệm quyết định phần lớn cách bạn vận hành IIS hằng ngày là Binding, Application Pool và Worker Process.

Binding

Binding quyết định request nào thuộc về website nào. Một website có thể có nhiều Binding cùng lúc, ví dụ HTTP port 80 cho domain chính và HTTPS port 443 cho một subdomain khác. Cấu hình sai Binding là nguyên nhân phổ biến khiến hai website “giẫm” lên nhau hoặc một site không truy cập được dù server vẫn chạy bình thường.

Application Pool

Application Pool tạo ranh giới cô lập giữa các ứng dụng, và một pool có thể chứa một hoặc nhiều ứng dụng. Với hệ thống quan trọng, bạn nên tách pool riêng cho từng ứng dụng để dễ quản lý và giảm ảnh hưởng chéo khi một ứng dụng gặp sự cố hoặc cần restart riêng.

Giao diện IIS Manager quản lý Application Pool, hiển thị trạng thái, Worker Process và cấu hình recycling

Worker Process

Worker Process là tiến trình thực thi request trong Application Pool, và một server có thể chạy nhiều w3wp.exe cùng lúc. Số lượng tiến trình phụ thuộc vào số pool đang chạy và cấu hình Web Garden đã nhắc ở phần trên.

IIS làm việc với ASP.NET và ASP.NET Core như thế nào?

Mức độ IIS “bắt buộc” hay chỉ “hữu ích” phụ thuộc vào việc ứng dụng chạy ASP.NET Framework hay ASP.NET Core. Đây là điểm nhiều đội kỹ thuật nhầm lẫn khi chuyển đổi giữa hai nền tảng.

IIS với ASP.NET Framework

ASP.NET Framework tích hợp sâu với IIS. Request đi qua cả IIS pipeline và ASP.NET pipeline, còn IIS quản lý Worker Process, authentication, Application Pool, runtime settings và recycling. Mô hình này phổ biến trong các hệ thống doanh nghiệp chạy .NET Framework, nơi IIS gần như là lựa chọn mặc định chứ không phải một trong nhiều phương án.

IIS với ASP.NET Core

ASP.NET Core thường chạy bằng Kestrel, một web server nhẹ tích hợp sẵn trong runtime .NET, còn IIS đứng phía trước để nhận HTTP/HTTPS request. ASP.NET Core Module (thành phần kết nối IIS với runtime .NET Core) nối IIS với ứng dụng theo hai mô hình: in-process hosting, tức ứng dụng chạy chung tiến trình với IIS worker process để giảm độ trễ, hoặc out-of-process hosting, tức ứng dụng chạy trong một tiến trình Kestrel riêng còn IIS chỉ chuyển tiếp request. Khi đứng trước Kestrel, IIS đảm nhiệm process management, port sharing, Windows Authentication, SSL termination (giải mã kết nối HTTPS), request filtering và logging, còn Kestrel đảm nhiệm việc chạy ứng dụng.

So sánh hai mô hình hosting ASP.NET Core trên IIS, in-process chạy chung tiến trình và out-of-process dùng Kestrel riêng

ASP.NET Core không bắt buộc phải chạy sau IIS. Ứng dụng có thể chạy sau Nginx, Apache, load balancer (thiết bị/phần mềm phân phối tải giữa nhiều server) hoặc trực tiếp bằng Kestrel trong môi trường phù hợp. Đây là điểm củng cố luận điểm ở đầu bài. Quyết định dùng IIS cho ASP.NET Core nên dựa vào việc server có phải Windows hay không, và đội vận hành có quen Windows Authentication/Active Directory hay không. Đó không phải vì “ASP.NET Core cần IIS”.

Các tính năng nổi bật của IIS

Các tính năng dưới đây chỉ thực sự phát huy giá trị khi đội vận hành đã quen với công cụ quản trị Windows. Nếu không, chúng chỉ là danh sách tính năng không tạo khác biệt thực tế.

Quản lý tập trung

IIS Manager, PowerShell và command line cho phép cấu hình website, pool, binding, certificate và log từ một nơi, và có thể quản lý từ xa khi được cấu hình đúng. Với đội đã quen PowerShell trong hệ sinh thái Windows, đây là lợi thế rõ so với việc học thêm công cụ quản trị mới.

Cô lập ứng dụng bằng Application Pool

Mỗi pool có identity riêng, runtime riêng, cấu hình recycling, idle timeout (thời gian chờ trước khi tắt tiến trình không hoạt động) và resource control riêng. Nhờ vậy tác động giữa các ứng dụng chạy chung server giảm đáng kể. Theo hướng dẫn best practice của LeanSentry, cơ chế overlapped recycling mặc định giữ worker process cũ chạy tới khi worker process mới sẵn sàng nhận request. Nhờ đó việc recycle định kỳ không gây gián đoạn dịch vụ cho client.

Authentication và authorization

IIS hỗ trợ nhiều cơ chế xác thực: Anonymous Authentication, Basic Authentication, Windows Authentication, Digest Authentication, Client Certificate Authentication và Authorization Rules (quy tắc phân quyền truy cập). Trong đó Windows Authentication là tính năng khó thay thế nhất nếu hệ thống của bạn đã gắn với Active Directory. Nó cho phép đăng nhập bằng tài khoản domain có sẵn mà không cần xây hệ thống xác thực riêng.

Request control và bảo mật

Request Filtering, IP Address Restrictions, SSL/TLS, Dynamic IP Restrictions, Hidden Segments và Request size limit là các lớp kiểm soát request trước khi tới ứng dụng. Đây là các tính năng tiêu chuẩn mà hầu hết web server hiện đại đều có, không riêng gì IIS.

Logging và troubleshooting

IIS Access Log, Failed Request Tracing (công cụ theo dõi request bị lỗi theo từng bước xử lý), HTTP status/substatus, tích hợp Event Viewer (công cụ xem log hệ thống của Windows) và log theo từng website là bộ công cụ chẩn đoán khi hệ thống gặp sự cố. Failed Request Tracing đặc biệt hữu ích khi cần biết chính xác request bị chặn ở bước nào trong pipeline, ví dụ ở authentication, một module cụ thể, hay một handler cụ thể.

Kiến trúc module mở rộng

IIS có thể bổ sung URL Rewrite (module viết lại đường dẫn URL), Application Request Routing, Compression, Output Caching (lưu tạm kết quả xử lý để trả nhanh hơn cho request sau), WebSocket (giao thức kết nối hai chiều liên tục) và FTP Server. Các module này giúp IIS đảm nhiệm thêm vai trò reverse proxy hoặc cache, nhưng đều là tính năng cài thêm, không phải mặc định như ở Nginx.

Ưu điểm và hạn chế của IIS

Ưu điểm

Hạn chế

Tích hợp sâu với Windows Server

Chủ yếu phù hợp với Windows

Hỗ trợ tốt ASP.NET và .NET

Có thể phát sinh chi phí license Windows Server

Tích hợp Windows Authentication và Active Directory

Không phải lựa chọn tự nhiên cho Linux stack

IIS Manager trực quan

Một số module cần cài thêm

Quản lý tốt bằng PowerShell

Cấu hình nâng cao vẫn đòi hỏi kiến thức hệ thống

Application Pool giúp cô lập ứng dụng

Có thể tốn nhiều tài nguyên hơn reverse proxy nhẹ trong một số workload

Có sẵn logging, authentication và filtering

Ít phổ biến hơn trong hệ sinh thái Linux container

Quản lý nhiều website thuận tiện

Cấp sai permission hoặc identity dễ gây lỗi vận hành

Phù hợp hệ thống doanh nghiệp Microsoft

Khó di chuyển sang hệ điều hành khác nếu phụ thuộc sâu vào Windows

Bảng trên cho thấy một mẫu hình rõ ràng: mọi ưu điểm của IIS đều gắn với hệ sinh thái Microsoft, còn mọi hạn chế đều xuất hiện khi bạn cố dùng IIS ngoài hệ sinh thái đó. Đây không phải trùng hợp, mà là bản chất thiết kế của IIS.

Về bảo mật, không nên khẳng định IIS an toàn hơn hoặc kém hơn Apache/Nginx một cách tuyệt đối. Mức độ bảo mật thực tế phụ thuộc vào phiên bản, mức độ cập nhật patch, cấu hình, chính bản thân ứng dụng, quyền hệ thống được cấp và quy trình vận hành của đội ngũ.

So sánh IIS, Apache và Nginx

Tiêu chí

IIS

Apache

Nginx

Nhà phát triển

Microsoft

Apache Software Foundation

F5/NGINX

Hệ điều hành thế mạnh

Windows

Linux và nhiều nền tảng

Linux và nhiều nền tảng

Quản lý

IIS Manager, PowerShell, web.config

File config, module, .htaccess

File config

Thế mạnh

.NET, Windows Authentication, Active Directory

PHP, shared hosting, module

Reverse proxy, static content, concurrency

Cô lập ứng dụng

Application Pool

Process/thread và OS-level isolation

Phụ thuộc upstream application

Reverse proxy

Có qua ARR/URL Rewrite

Có qua module

Là thế mạnh chính

Static content

Tốt

Tốt

Rất mạnh

Dynamic application

Tốt với Microsoft stack

Tốt với nhiều runtime

Thường proxy đến backend

Chi phí OS

Có thể cần Windows Server

Thường dùng Linux

Thường dùng Linux

Môi trường phổ biến

Enterprise Microsoft

PHP, CMS, shared hosting

API, microservices, cloud-native

Bảng so sánh trên lý giải vì sao IIS chỉ chiếm khoảng 3,1% thị phần web server toàn cầu theo số liệu W3Techs đã dẫn ở trên, trong khi Nginx và Apache cộng lại chiếm hơn một nửa thị trường. Thị trường web server phần lớn là Linux, còn IIS giữ một ngách riêng: hệ thống doanh nghiệp đã cam kết với Windows Server và .NET. Trong ngách đó, IIS không có đối thủ tương đương về mức độ tích hợp. Ngoài ngách đó, Apache và Nginx thường thắng về chi phí hạ tầng và hiệu năng thuần cho reverse proxy hay static content.

Vậy nên chọn web server nào? Chọn IIS khi hệ thống dùng Windows Server, cần Active Directory, hoặc chạy ASP.NET Framework. Chọn Apache khi cần .htaccess, chạy PHP/shared hosting, hoặc cần hệ sinh thái module rộng. Chọn Nginx khi cần reverse proxy, phục vụ static content, xử lý nhiều kết nối đồng thời, hoặc vận hành microservices trên Linux. Trong hệ thống thực tế, nhiều đội kết hợp cả hai, ví dụ đặt Nginx làm reverse proxy phía trước IIS, thay vì ép buộc chỉ chọn một.

Khi nào nên sử dụng IIS?

Bảng quyết định dưới đây tránh lặp lại phần tình huống sử dụng đã nêu, tập trung vào mức độ phù hợp theo từng bối cảnh hạ tầng:

Bối cảnh

Mức độ phù hợp

Ứng dụng chạy trên Windows Server

Rất phù hợp

Hệ thống dùng ASP.NET Framework

Rất phù hợp

Cần Windows Authentication

Rất phù hợp

Tích hợp Active Directory

Rất phù hợp

Đội vận hành quen IIS Manager và PowerShell

Phù hợp

Chạy ASP.NET Core trên Windows

Phù hợp

Hosting nhiều ứng dụng nội bộ

Phù hợp

Hạ tầng chủ yếu chạy Linux

Bạn nên cân nhắc lựa chọn khác

Dùng Linux container hoặc Kubernetes

Bạn nên cân nhắc giải pháp khác

Chỉ cần reverse proxy nhẹ

Bạn có thể cân nhắc Nginx

Stack chủ yếu PHP hoặc WordPress

Bạn có thể cân nhắc Apache/Nginx

Muốn giảm chi phí license hệ điều hành

Bạn nên cân nhắc chuyển sang Linux

IIS phù hợp nhất khi ứng dụng, hệ điều hành và đội vận hành đều thuộc hệ sinh thái Microsoft. Nếu chỉ một trong ba yếu tố đó lệch khỏi Microsoft, ví dụ ứng dụng .NET Core nhưng đội vận hành quen Linux hoặc ngược lại, câu hỏi đáng đặt ra không phải “IIS có tốt không”. Câu hỏi đúng là “chi phí duy trì Windows Server có xứng với lợi ích tích hợp không”.

Phân biệt IIS, IIS Manager và IIS Express

Ba khái niệm này thường bị dùng lẫn, dù mỗi cái phục vụ một mục đích khác nhau:

Khái niệm

Ý nghĩa

Môi trường phù hợp

IIS

Web server đầy đủ của Windows

Staging và production

IIS Manager

Công cụ giao diện để quản trị IIS

Administrator và developer

IIS Express

Phiên bản nhẹ phục vụ development

Máy developer và Visual Studio

IIS Manager không phải một web server độc lập. Nó chỉ là công cụ giao diện để bạn quản trị IIS đang chạy. IIS Express thường được Visual Studio dùng để chạy ứng dụng ở máy local. Phiên bản này nhẹ hơn IIS đầy đủ và ít yêu cầu quyền quản trị hơn, nên phù hợp cho phát triển và kiểm thử. Bạn không nên xem IIS Express là lựa chọn thay thế đầy đủ cho IIS production. Bản production mới có quản lý Application Pool đầy đủ, cấu hình tập trung, xác thực nâng cao, logging, quản trị từ xa và các cài đặt bảo mật cấp server.

Hướng dẫn cài IIS trên Windows

Cách bật IIS trên Windows 10 hoặc Windows 11

Bạn mở Control Panel, chọn Programs, rồi chọn Turn Windows features on or off. Tích chọn Internet Information Services, mở rộng mục đó và chọn các thành phần cần thiết:

  • Web Management Tools.
  • World Wide Web Services.
  • Common HTTP Features.
  • Static Content.
  • Default Document.

Cửa sổ Windows Features với Internet Information Services và các thành phần con được tích chọn

Bạn nhấn OK để cài đặt, khởi động lại máy nếu được yêu cầu, rồi truy cập http://localhost để kiểm tra.

Bạn chỉ nên bật các feature thực sự cần, không chọn toàn bộ Role Services (các vai trò/dịch vụ con có thể cài thêm cho IIS) theo thói quen. Các tính năng như CGI (giao diện chạy chương trình ngoài để xử lý request), FTP, WebSocket hoặc Windows Authentication chỉ nên bật khi ứng dụng thực sự yêu cầu. Mỗi feature bật thêm là một bề mặt tấn công (attack surface) tiềm năng cần vá và giám sát.

Cách cài IIS trên Windows Server

Bạn mở Server Manager, chọn Add Roles and Features, rồi chọn Role-based or feature-based installation. Chọn server cần cài, chọn Web Server (IIS), thêm Management Tools, chọn các Role Services cần thiết rồi nhấn Install. Sau khi hoàn tất, bạn nên kiểm tra Default Web Site để xác nhận cài đặt thành công.

Bạn cũng có thể cài bằng PowerShell với một lệnh duy nhất:

Install-WindowsFeature Web-Server -IncludeManagementTools

Terminal PowerShell chạy lệnh Install-WindowsFeature Web-Server và kiểm tra dịch vụ W3SVC đang chạy

Cách kiểm tra IIS đã hoạt động

Bạn truy cập http://localhost để xác nhận trang mặc định hiển thị, hoặc mở IIS Manager bằng lệnh inetmgr. Trong IIS Manager, bạn kiểm tra bốn điểm sau:

  • Default Web Site có trạng thái Started.
  • Port 80 không bị ứng dụng khác chiếm.
  • World Wide Web Publishing Service đang chạy.
  • Windows Firewall cho phép traffic cần thiết.

Cách tạo website đầu tiên trên IIS

Bước 1. Chuẩn bị thư mục website

Bạn tạo một thư mục, ví dụ C:\Sites\demo, rồi tạo file index.html bên trong với nội dung tối thiểu:

<!DOCTYPE html>

<html lang=”vi”>

<head>

    <meta charset=”UTF-8″>

    <title>IIS Demo</title>

</head>

<body>

    <h1>Website đang chạy trên IIS</h1>

</body>

</html>

Bước 2. Tạo Application Pool

Bạn mở IIS Manager, chọn Application Pools, rồi chọn Add Application Pool. Nhập tên pool và chọn runtime phù hợp. Với ứng dụng ASP.NET Core, bạn thường chọn No Managed Code vì runtime đã được Kestrel xử lý riêng. Bạn không nên dùng chung một pool cho tất cả ứng dụng quan trọng nếu không thực sự cần thiết, để giữ được lợi ích cô lập đã nói ở phần Application Pool.

Bước 3. Add Website

Trong IIS Manager, bạn nhấp chuột phải vào Sites rồi chọn Add Website. Nhập site name, Application Pool, physical path, protocol, IP address, port và host name, rồi nhấn OK.

Form Add Website trong IIS Manager với các trường site name, Application Pool, physical path, protocol, IP address và port

Bước 4. Cấu hình Binding

Với môi trường local, bạn có thể dùng protocol HTTP, port 8080, để trống host name. Nếu muốn dùng hostname riêng, ví dụ protocol HTTP, port 80, host name demo.local, bạn cần thêm dòng tương ứng vào hosts file của máy trước khi truy cập được.

Bước 5. Cấp quyền thư mục

Bạn cấp quyền Read and Execute cho identity phù hợp, không cấp Full Control cho Everyone. Chỉ cấp thêm quyền Write khi ứng dụng thực sự cần upload hoặc ghi file. Nếu gặp lỗi 401, 403 hoặc 500.19 khi truy cập, bạn nên kiểm tra Application Pool Identity trước tiên, vì đây là nguyên nhân phổ biến nhất của nhóm lỗi này.

Bước 6. Kiểm tra website

Bạn truy cập http://localhost:8080 hoặc domain đã cấu hình để xác nhận website chạy đúng. Lưu ý rằng hai website không thể dùng cùng lúc protocol, IP, port và hostname nếu toàn bộ Binding giống nhau. Bạn cần thay đổi ít nhất một trong bốn yếu tố này.

Checklist bảo mật cơ bản sau khi cài IIS

Sau khi website chạy ổn định, bạn nên rà qua các điểm bảo mật cơ bản sau:

  • Bạn chỉ cài các Role Services thực sự cần thiết.
  • Bạn cập nhật Windows Server thường xuyên.
  • Bạn dùng HTTPS cho môi trường production.
  • Bạn tạo Application Pool riêng cho từng ứng dụng quan trọng.
  • Bạn chạy pool bằng identity có quyền tối thiểu cần thiết.
  • Bạn không cấp Full Control cho thư mục website nếu không cần.
  • Bạn tắt Directory Browsing (tính năng liệt kê toàn bộ file trong thư mục khi không có trang mặc định).
  • Bạn không hiển thị Detailed Errors cho người dùng trên Internet.
  • Bạn bật IIS Logging để có dữ liệu khi cần điều tra sự cố.
  • Bạn cấu hình Request Filtering phù hợp với ứng dụng.
  • Bạn giới hạn request size ở mức hợp lý.
  • Bạn xóa site, application và module không còn sử dụng.
  • Bạn bảo vệ file web.config khỏi truy cập trực tiếp qua HTTP.
  • Bạn không lưu password hoặc secret dạng plain text trong cấu hình.
  • Bạn kiểm tra hạn certificate định kỳ để tránh hết hạn bất ngờ.
  • Bạn bật Failed Request Tracing khi cần troubleshooting sâu.
  • Bạn không expose IIS Manager ra Internet nếu chưa có lớp bảo vệ phù hợp.
  • Bạn theo dõi Application Pool recycle và crash để phát hiện bất thường sớm.

Đây là checklist cơ bản; nội dung hardening chuyên sâu cho môi trường doanh nghiệp lớn nên tách thành một bài riêng, vì mỗi mục ở trên còn nhiều lớp cấu hình chi tiết hơn tùy quy mô hệ thống.

FAQ

IIS có phải là dịch vụ hosting không?
Không. IIS là phần mềm web server chạy trên một máy chủ. Hosting là dịch vụ cung cấp server, storage, network và môi trường vận hành để website hoạt động, trong đó IIS có thể là một thành phần được cài đặt sẵn.
IIS có phải công cụ lập trình website không?
Không. Developer viết code bằng framework hoặc ngôn ngữ lập trình như ASP.NET, PHP hay Node.js. IIS chỉ triển khai và phục vụ ứng dụng đã được viết sẵn, không tham gia vào việc viết code.
IIS chỉ chạy được ASP.NET phải không?
Không. IIS có thể phục vụ static content, PHP, API và nhiều runtime khác khi được cấu hình đúng module, dù ASP.NET vẫn là trường hợp tích hợp sẵn và ít cấu hình thêm nhất.
ASP.NET Core có bắt buộc phải dùng IIS không?
Không. ASP.NET Core có thể chạy bằng Kestrel và đứng sau IIS, Nginx, Apache hoặc load balancer, tùy vào hệ điều hành và hạ tầng bạn đang vận hành.
IIS Express có dùng cho production được không?
Không nên. IIS Express được thiết kế cho development và local testing, thiếu các tính năng quản lý Application Pool và bảo mật cấp server mà môi trường production cần.
w3wp.exe là gì?
Đây là tiến trình IIS Worker Process. Mỗi Application Pool đang hoạt động có thể tạo ra một hoặc nhiều w3wp.exe, tùy vào cấu hình Web Garden của pool đó.
IIS có thể làm reverse proxy không?
Có. IIS thường dùng URL Rewrite và Application Request Routing để chuyển request đến ứng dụng backend, dù đây không phải thế mạnh chính của IIS so với Nginx.
Bật IIS trên Windows 11 có thể dùng làm production server không?
Về mặt kỹ thuật máy có thể phục vụ website. Nhưng môi trường production nên dùng Windows Server với cấu hình bảo mật, giám sát, sao lưu và license phù hợp, thay vì chạy trên máy trạm Windows 11 thông thường.
Trần Đức Tâm
Trần Đức Tâm
Giám đốc Khối Kinh doanh Hạ tầng Internet

Trần Đức Tâm là chuyên gia về hạ tầng Internet, Domain, Hosting, Cloud và chuyển đổi số, với nhiều năm kinh nghiệm phát triển các dịch vụ Internet tại Việt Nam và Nhật Bản. Ông hiện là Giám đốc Khối Kinh doanh Hạ tầng Internet tại GMO-Z.com RUNSYSTEM, từng giữ các vị trí lãnh đạo tại Onamae.com, Tenten.vn và Z.com Việt Nam. Các bài viết của ông tập trung vào tên miền, hosting, VPS, email doanh nghiệp, SSL và hạ tầng Internet.