Hướng dẫn cấu hình netcore lên iis năm 2024

Trong bài viết này chúng ta sẽ tìm hiểu về Kestrel, một web server dành cho ASP.NET Core. Cách mà chúng ta host ứng dụng trong ASP.NET Core đã thay đổi so với phiên bản ASP.NET cũ. Kestrel là cách mới để host ứng dụng ASP.NET Core. Nó chạy ứng dụng độc lập và hoàn toàn có thể tự host được.

Kestrel là gì?

Kestrel là một HTTP web server mã nguồn mở (open source), đa nền tảng (cross-platform), hướng sự kiện (event-driven) và bất đồng bộ (asynchronous I/O). Nó được phát triển để chạy ứng dụng ASP.NET Core trên bất cứ nền tảng nào. Nó được thêm vào mặc định trong ứng dụng ASP.NET Core.

Nó dựa trên Luv, và Kestrel là một mã nguồn mở trên Github

Tại sao sử dụng Kestrel

Ứng dụng ASP.NET cũ thường dính chặt vào IIS (Internet Information Service). IIS là một web server với tất cả các tính năng đầy đủ cần có. Nó được phát triển từ khá lâu và rất trưởng thành, nhưng nó cồng kềnh và nặng. Nó trở thành một trong những Web server tốt nhất ở thời điểm hiện tại nhưng nó cũng là một trong những thứ chậm nhất.

ASP.NET dính chặt vào IIS cũng là gánh nặng cho IIS.

Thiết kế mới của ứng dụng ASP.NET Core giờ đây hoàn toàn tách rời khỏi IIS. Điều này tạo cho ASP.NET Core có thể chạy trên bất cứ nền tảng nào. Nhưng nó vẫn có thể lắng nghe các HTTP Request và gửi lại response về cho client. Đó là Kestrel.

Sử dụng Kestrel

Kestrel chạy in-process trong ứng dụng ASP.NET Core. Vì thế nó chạy độc lập với môi trường. Kestrel web server nằm trong thư viện Microsoft.AspNetCore.Server.Kestrel.

Chúng ta hãy xem 2 class Program và Startup được giới thiệu trong bài: Khởi động ứng dụng trong ASP.NET Core. Program class chứa một phương thức Main và là điểm khởi động của ứng dụng.

public class Program {

public static void Main(string[] args)
{
    BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup()
    .Build();
}

Phương thức Main gọi đến CreateDefaultBuilder, có trách nhiệm tạo một host cho ứng dụng. (Host là nơi chứa ứng dụng để chạy). CreateDefaultBuilder đăng ký Kestrel như là server sẽ sử dụng trong ứng dụng.

Có 2 cách để sử dụng Kestrel

  1. Tự host (Self Hosting)
  2. Đằng sau một Web server khác

Tự host (Self Hosting)

Mô hình self hosting của ASP.NET Core là lắng nghe trực tiếp các HTTP Request từ internet như hình dưới đây:

Hướng dẫn cấu hình netcore lên iis năm 2024

Đằng sau Web Server khác

Kestrel không phải là một web server đầy đủ tính năng. Nhưng nó nhanh. Nó không đủ mạnh để chạy Kestrel một mình trên môi trường Production. Nó được đề xuất chạy đằng sau một Web Server Fully Feature như IIS, Nginx hay Apache…Trong kịch bản này các web server khác như là một reverse proxy server (máy chủ ủy quyền). Các Reverse proxy server sẽ lấy HTTP Request từ internet và gửi sang Kestrel. IIS có thể lấy HTTP Request và thực hiện một số các xử lý như ghi log, lọc request, rewrite-url trước khi gửi sang cho Kestrel.

Hướng dẫn cấu hình netcore lên iis năm 2024

Có nhiều lý do tại sao chúng ta sử dụng mô hình này cho môi trường Production.

  1. Bảo mật: Nó có thể hạn chế việc phơi ra ngoài những gì không cần thiết và nó cũng cho chúng ta các tùy chọn về cấu hình và bảo vệ ứng dụng.
  2. Dễ dàng cài đặt cân bằng tải
  3. Cài đặt SSL: Chỉ các máy chủ ủy quyền cần các chứng chỉ SSL, còn các server này có thể làm việc với ứng dụng của bạn trên mạng nội bộ sử dùng HTTP thuần.
  4. Chia sẻ một IP với nhiều địa chỉ
  5. Lọc các Request, ghi log và rewrite-URL…
  6. Nó có thể restart ứng dụng nếu bị crash.

Phương thức CreateDefaultBuilder gọi UseIISIntegration, sẽ nói co ASP.NET rằng ứng dụng sử dụng IIS như là một reverse proxy server đằng trước Kestrel.

Thay thế cho Kestrel

Kestrel không phải là cách duy nhất để host ứng dụng ASP.NET Core. Có một web server khác triển khai có sẵn trên Windows là HTTP.SYS.

HTTP.sys là một HTTP Server dựa trên Http.Sys kernel driver và nó chỉ sử dụng trên Windows.

Các bạn có thể tìm hiểu thêm tại đây: Cách sử dụng HTTP SYS

Kết luận

Bài viết này chúng ta sẽ học về Kestrel server. Một In-process web server để chạy ASP.NET Core trên đa nền tảng.

Quá trình phát triển mạnh mẽ của Internet như hiện nay là tiền đề cho sự ra đời của nhiều dịch vụ mạng máy tính. Trong đó, IIS là một trong những dịch vụ có vai trò vô cùng quan trọng đối với máy chủ. Vậy, IIS là gì? Cách thức hoạt động của IIS như thế nào? Hãy cùng Vietnix tìm hiểu tại bài viết dưới đây!

IIS là gì?

IIS (Internet Information Services) là các dịch vụ dành cho máy chủ chạy trên Windows nhằm cung cấp thông tin và phân tán chúng lên hệ thống mạng. IIS bao gồm rất nhiều dịch vụ như: FTP Server, Web Server,… Dịch vụ này được đính kèm ở những phiên bản hệ điều hành Windows.

Hướng dẫn cấu hình netcore lên iis năm 2024
IIS là gì?

IIS thường được sử dụng với vai trò xuất bản các nội cho website và đưa các nội dung lên nền tảng Internet hoặc Intranet. Việc này được thực hiện dựa trên phương thức chuyển giao siêu văn bản hay còn được gọi là HTTP (Hypertext Transport Protocol).

Với vai trò đó, IIS là một trong những thành phần không thể thiếu của một trang web. Chỉ khi tồn tại Web Server, trang web mới có thể hiển thị nội dung trên Internet. Hy vọng với những chia sẻ trên có thể giúp bạn biết được IIS là gì? và cách cài đặt, cấu hình IIS cho website. Nếu cần tư vấn hoặc hỗ trợ, bạn hãy để lại thông tin dưới bình luận, Vietnix sẽ nhanh chóng liên hệ và trả lời nhanh nhất.