Khi nào nên sử dụng reverse proxy với máy chủ web Kestrel trong ASP.NET Core
Kestrel có thể được sử dụng độc lập hoặc kết hợp với reverse proxy server (máy chủ proxy ngược). Reverse proxy server nhận các yêu cầu HTTP từ mạng và chuyển tiếp chúng đến Kestrel. Ví dụ về reverse proxy server bao gồm:
Kestrel được sử dụng như một edge server (máy chủ biên) kết nối trực tiếp với Internet:
![Kestrel giao tiếp trực tiếp với Internet mà không có reverse proxy server]
Kestrel được sử dụng trong cấu hình reverse proxy:
![Kestrel giao tiếp gián tiếp với Internet thông qua reverse proxy server, chẳng hạn như IIS, Nginx, hoặc Apache]
Cả hai cấu hình, có hoặc không có reverse proxy server, đều là cấu hình hosting (lưu trữ) được hỗ trợ.
Khi Kestrel được sử dụng như edge server mà không có reverse proxy server, việc chia sẻ cùng địa chỉ IP và cổng giữa nhiều tiến trình (process) là không được hỗ trợ. Khi Kestrel được cấu hình để lắng nghe trên một cổng, Kestrel xử lý tất cả lưu lượng cho cổng đó bất kể header Host của yêu cầu. Một reverse proxy có thể chia sẻ cổng có thể chuyển tiếp yêu cầu đến Kestrel trên địa chỉ IP và cổng duy nhất.
Ngay cả khi không cần reverse proxy server, việc sử dụng reverse proxy server cũng có thể là lựa chọn tốt.
Một reverse proxy:
- Có thể giới hạn vùng bề mặt công khai (exposed public surface area) của các ứng dụng mà nó lưu trữ.
- Cung cấp thêm một lớp cấu hình và phòng thủ theo chiều sâu (defense-in-depth) trong an ninh mạng.
- Có thể tích hợp tốt hơn với cơ sở hạ tầng hiện có.
- Đơn giản hóa cân bằng tải (load balancing) và cấu hình truyền thông bảo mật (HTTPS). Chỉ reverse proxy server cần chứng chỉ X.509 cho domain công khai. Server đó có thể giao tiếp với các server của ứng dụng trên mạng nội bộ bằng HTTP thuần túy hoặc HTTPS với các chứng chỉ được quản lý cục bộ. HTTPS nội bộ tăng cường bảo mật nhưng thêm chi phí đáng kể.
Cảnh báo: Hosting trong cấu hình reverse proxy yêu cầu host filtering (lọc host).