Một điểm ghi nhớ đơn giản về Nginx - ketquabongdatructuyen
Tuần trước, khi tôi đang xử lý một bảng tỷ số bóng đá cấu hình của Nginx, tôi đã phát hiện ra một chi tiết nhỏ mà trước đây mình chưa hiểu rõ. Cụ thể là trong một tình huống phổ biến, chúng ta thường nghĩ rằng một địa chỉ IP cùng với một cổng nhất định chỉ có thể cấu hình cho một dịch vụ tên miền duy nhất. Ví dụ, nếu bạn cấu hình tin tức bóng đá dịch vụ này để ánh xạ tới 127.0.0.1:443
, và bạn muốn thêm một tên miền khác cũng được dẫn hướng đến máy chủ này nhưng chuyển tiếp đến các dịch vụ phía sau khác nhau, thì lúc này bạn cần sử dụng đến tính năng gọi là SNI (Server Name Indication).
Server Name Indication (SNI)
Một giải pháp linh hoạt hơn để chạy nhiều máy chủ HTTPS trên cùng một địa chỉ IP là mở rộng TLS Server Name Indication (SNI, RFC 6066). Tính năng này cho phép trình duyệt truyền tên máy chủ được yêu cầu trong quá trình bắt tay SSL/TLS, nhờ đó máy chủ sẽ biết phải sử dụng chứng chỉ nào phù hợp cho kết nối. Hiện tại, hầu hết các trình duyệt hiện đại đều hỗ trợ SNI, mặc dù một số trình duyệt cũ hoặc đặc biệt có thể không sử dụng tính năng này.
Trước tiên, chúng ta cần đảm bảo rằng hệ thống đã hỗ trợ SNI. Dưới đây là một ví dụ thực tế về cách cấu hình:
1stream {
2 map $ssl_preread_server_name $stream_map {
3 nicksxs.me nme;
4 nicksxs.com ncom;
5 }
6
7 upstream nme {
8 server 127.0.0.1:8000;
9 }
10
11 upstream ncom {
12 server 127.0.0.1:8001;
13 }
14
15 server {
16 listen 443 reuseport;
17 proxy_pass $stream_map;
18 ssl_preread on;
19 }
20}