Chia sẻ
//Kiến trúc, cách hoạt động và cấu hình cơ bản của Nginx

Kiến trúc, cách hoạt động và cấu hình cơ bản của Nginx

Nginx (Engine X) là một HTTP web server mã nguồn mở nổi tiếng, được phát triển ban đầu bởi Igor Sysoev vào năm 2004 để giải quyết vấn đề C10k problem (xử lý 10.000 kết nối đồng thời). Hiện nay, Nginx không chỉ là một web server mà còn là một reverse proxy, load balancerHTTP cache mạnh mẽ.

1. Tổng quan về Nginx

  • Nginx là một HTTP web server, reverse proxy, load balancer, content cache, TCP/UDP proxy server, và mail proxy server.
  • Được biết đến với tính linh hoạt, hiệu suất cao, ổn định, tiêu thụ tài nguyên thấp, và cấu hình đơn giản.
  • Xử lý đồng thời hàng nghìn kết nối hiệu quả nhờ cơ chế event-driven (hướng sự kiện) và non-blocking I/O.

2. Thành phần chính của kiến trúc Nginx

Tìm hiểu về Nginx

Thành phần chính của kiến trúc Nginx

Master Process:

  • Quản lý toàn bộ vòng đời của Nginx.
  • Đọc và kiểm tra file cấu hình (nginx.conf).
  • Tạo và khởi động các worker processes.
  • Xử lý tín hiệu từ hệ thống (như khởi động lại, reload, dừng).
  • Không trực tiếp xử lý yêu cầu từ client.

Worker Processes:

  • Xử lý các yêu cầu từ client, phục vụ static content, hoặc chuyển tiếp yêu cầu đến backend.
  • Làm việc độc lập và tận dụng event-driven để xử lý nhiều kết nối cùng lúc.
  • Số lượng worker_processes thường bằng số core CPU để tận dụng tối đa tài nguyên.

Cache Loader Process (tùy chọn):

  • Nạp nội dung cache từ ổ đĩa vào bộ nhớ khi khởi động lại.

Cache Manager Process (tùy chọn):

  • Quản lý kích thước và dọn dẹp nội dung cache định kỳ.

3. Cách hoạt động của Worker Process

Worker Process tuân theo mô hình event-driven, sử dụng cơ chế như epoll (trên Linux) để xử lý nhiều kết nối đồng thời trên một luồng (thread) duy nhất.

A. Khởi tạo và chờ sự kiện

Khởi tạo: Sau khi được Master Process tạo ra, Worker Process đọc thông tin cấu hình từ tệp cấu hình Nginx và thiết lập vòng lặp sự kiện (event loop) để theo dõi các kết nối mới, các yêu cầu I/O, hoặc các tác vụ cần xử lý.

Chờ sự kiện: Worker Process đăng ký các sự kiện cần theo dõi (như kết nối mới, dữ liệu đến, hoặc ghi dữ liệu xong) với hệ thống thông qua cơ chế epoll.

B. Xử lý kết nối

Nhận sự kiện từ epoll: Khi có sự kiện (như một yêu cầu mới từ client), epoll thông báo cho Worker Process và Worker Process xử lý sự kiện đó ngay lập tức.

Không chặn kết nối: Worker Process không chặn khi chờ dữ liệu hoặc tài nguyên. Nếu dữ liệu chưa sẵn sàng (ví dụ: chưa đọc xong body yêu cầu), Worker Process tạm ngừng và tiếp tục xử lý các kết nối khác trong hàng đợi.

Xử lý song song: Dù mỗi Worker Process chỉ chạy một luồng nhưng nó có thể xử lý hàng nghìn kết nối đồng thời bằng cách xen kẽ giữa các sự kiện trong vòng lặp.

C. Xử lý yêu cầu

Phân tích yêu cầu: Phân tích cú pháp HTTP request (headers, method, URL, v.v.), kiểm tra tính hợp lệ và thực hiện các bước được chỉ định trong cấu hình.

Thực hiện nhiệm vụ: Phục vụ nội dung tĩnh, proxy request đến backend server, hoặc xử lý SSL/TLS.

D. Gửi phản hồi

Chuẩn bị phản hồi: Tạo HTTP response với status code, headers, và body.

Gửi phản hồi: Ghi dữ liệu qua socket hoặc gửi từng phần nếu dữ liệu lớn (chunked response).

E. Kết thúc hoặc giữ kết nối

Sau khi xử lý xong, Worker Process sẽ đóng kết nối nếu không có yêu cầu tiếp theo hoặc giữ kết nối mở nếu HTTP keep-alive được bật.

4. Cấu hình Worker Processes

A. Worker Processes

File cấu hình: /etc/nginx/nginx.conf (Thông thường, file cấu hình có thể nằm trong /usr/local/nginx/conf hoặc /etc/nginx hoặc /usr/local/etc/nginx).

Tùy chỉnh thông qua tham số worker_processes (mặc định: auto = số core CPU).

Ví dụ:

worker_processes auto;

B. Worker Connections

Mỗi worker process có thể xử lý nhiều kết nối đồng thời.

Số kết nối đồng thời tối đa được cấu hình qua directive worker_connections.

Ví dụ:

worker_connections 1024;

Công thức tính số kết nối đồng thời tối đa:
Max Connections = worker_processes × worker_connections

Ví dụ:

  • worker_processes 4;
  • worker_connections 1024;
  • Max Connections = 4 × 1024 = 4096 kết nối đồng thời.

C. Use Epoll (Linux-specific)

Trên hệ thống Linux, nên bật cơ chế epoll để tối ưu hóa hiệu suất xử lý sự kiện.

Ví dụ:

use epoll;

D. CPU Affinity

Chỉ định mỗi Worker Process sử dụng một CPU core cụ thể để giảm chi phí chuyển đổi.

Ví dụ:

worker_cpu_affinity auto;

5. Kết luận

Nginx với kiến trúc hướng sự kiện và khả năng xử lý đồng thời vượt trội, phù hợp cho:

  • Máy chủ web (nội dung tĩnh).
  • Máy chủ proxy ngược (Reverse Proxy).
  • Bộ cân bằng tải (Load Balancer) và quản lý cache.
  • Làm gateway cho các ứng dụng microservices.

Việc hiểu rõ kiến trúc và tối ưu cấu hình Nginx giúp nâng cao hiệu suất, giảm thiểu tài nguyên và đảm bảo hệ thống ổn định cho các ứng dụng web quy mô lớn.

Lời khuyên: Nếu bạn đang làm việc với Nginx, việc thử nghiệm và giám sát hiệu năng (monitoring) là điều cần thiết để tối ưu hóa cho từng trường hợp sử dụng cụ thể. Các công cụ như Nginx amplify, Prometheus + Grafana rất hữu ích trong việc này.

Tài liệu tham khảo:

Nguyễn Thị Mỹ Phương
Developer

ỨNG TUYỂN







    Chế độ phúc lợi

    CHÍNH SÁCH LƯƠNG & THƯỞNG

    Thấu hiểu tâm tư nguyện vọng của nhân viên, công ty Rivercrane Việt Nam đặc biệt thiết lập chế độ xét tăng lương định kỳ 2lần/năm. Xét đánh giá vào tháng 06 và tháng 12 hàng năm và thay đổi lương vào tháng 01 và tháng 07 hàng năm. Ngoài ra, nhân viên còn được thưởng thành tích định kỳ cho các cá nhân xuất sắc trong tháng, năm.

    CHẾ ĐỘ ĐÀO TẠO TẠI NHẬT

    Luôn luôn mong muốn các kỹ sư và nhân viên trong công ty có cái nhìn toàn diện về lập trình những mảng kỹ thuật trên thế giới, công ty Rivercrane Việt Nam quyết định chế độ 3 tháng 1 lần đưa nhân viên đi học tập tại Nhật. Các bạn kỹ sư hoàn toàn đều có thể quyết định khả năng phát triển bản thân theo hướng kỹ thuật hoặc theo hướng quản lý.

    CHẾ ĐỘ ĐI DU LỊCH HÀNG NĂM

    Không chỉ đưa đến cho nhân viên những công việc thử thách thể hiện bản thân, công ty Rivercrane Việt Nam muốn nhân viên luôn thích thú khi đến với những chuyến hành trình thú vị hàng năm. Những buổi tiệc Gala Dinner sôi động cùng với những trò chơi Team Building vui nhộn sẽ giúp cho đại gia đình Rivercrane thân thiết hơn.

    CHẾ ĐỘ EVENT CÔNG TY

    Những hoạt động Team building, Company Building, Family Building, Summer Holiday, Mid-Autumn Festival… sẽ là những khoảnh khắc gắn kết đáng nhớ của mỗi một nhân viên trong từng dự án, hoặc sẽ là những điều tự hào khi giới thiệu công ty mình với với gia đình thân thương, cùng nhau chia sẻ yêu thương với thông điệp “We are One”

    BẢO HIỂM

    Công ty Rivercrane Việt Nam đảm bảo tham gia đầy đủ chế độ Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp. Cam kết chặt chẽ về mọi thủ tục phát sinh công ty đều hỗ trợ và tiến hành cho nhân viên từ đầu đến cuối. Những chế độ bảo hiểm khác công ty cũng đặc biệt quan tâm và từng bước tiến hành.

    CHẾ ĐỘ PHÚC LỢI KHÁC

    Hỗ trợ kinh phí cho các hoạt động văn hóa, văn nghệ, thể thao; Hỗ trợ kinh phí cho việc mua sách nghiên cứu kỹ thuật; Hỗ trợ kinh phí thi cử bằng cấp kỹ sư, bằng cấp dành cho ngôn ngữ. Hỗ trợ kinh phí tham gia các lớp học về quản lý kỹ thuật bên ngoài; Các hỗ trợ phúc lợi khác theo quy định công ty…

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close