NGINX là gì? Cơ chế hoạt động & chức năng của NGINX

NGINX là gì? Cơ chế hoạt động & chức năng của NGINX

Tác giả: FPT Cloud
00:00

Nếu bạn đang tìm kiếm một giải pháp tối ưu có thể xử lý nhiều kết nối đồng thời thì NGINX sẽ là một lựa chọn tốt nhất dành cho bạn. Vậy NGINX là gì? Apache Server và NGINX server có gì khác biệt? Làm thế nào để cài đặt web server NGINX về máy? Sau đây, FPT Cloud mời bạn cùng tìm hiểu bài viết sau đây để hiểu rõ hơn về web server mã nguồn mở này.

NGINX là gì?

NGINX hay còn được viết cách điệu là NGIИX, là một web server mã nguồn mở vô cùng mạnh mẽ và nổi tiếng phục vụ web HTTP. Với NGIИX sử dụng kiến thức đơn luồng, (event-driven) không đồng bộ (asynchronous) để có hiệu suất và sự ổn định tối đa và là lựa chọn ưa chuộng hơn Apache server. Nó có thể phục vụ các công việc như như load balancing, HTTP caching, hay sử dụng như một reverse reverse proxying, media streaming và email proxy như IMAP, POP3, và SMTP….  

Vì NGINX server đáng tin cậy, tốc độ và có khả năng mở rộng lớn nên những ông lớn công nghệ dùng nó là Google, Netflix, Adobe, Cloudflare, WordPress,..đã lựa chọn NGINX

Cách thức hoạt động của NGINX

Trước khi tìm hiểu cách thức hoạt động của NGINX thì chúng ta cần biết cách web server hoạt động thế nào. Ví dụ, khi có một người nào đó gửi yêu cầu mở một trang web, trình duyệt sẽ liên lạc với server chứa website đó. Sau đó, server sẽ tìm kiếm đúng file được yêu cầu của trang đó và gửi ngược lại về cho server. Đây được xem là một loại truy vấn đơn giản nhất. 

Ví dụ trên được xem như là một single thread –  các bước xử lý dữ liệu được thực thi theo 1 trình tự duy nhất nhưng NGINX không hoạt động theo cách đó. NGINX thực hiện theo kiến trúc bất đồng bộ (asynchronous), hướng sự kiện (event driven) có nghĩa là các luồng tương tự được quản lý trong một tiến trình và mỗi tiến trình (process) chứa các đơn vị nhỏ hơn gọi là worker connection và cả bộ work connection này chịu trách nhiệm xử lý các threads cung cấp các yêu cầu của work process và sẽ gửi đến master process. Và cuối cùng master process sẽ trả kết quả cho những yêu cầu đó.

Nghe có vẻ đơn giản, nhưng mỗi worker connection có thể xử lý tới 1024 yêu cầu tương tự nhau. Do đó, NGINX có thể xử lý hàng ngàn yêu cầu mà không gặp trở ngại gì. Đó là lý do NGINX trở nên được tin dùng cho các trang web có nhiều yêu cầu như môi trường thương mại điện tử, trình tìm kiếm, và cloud storage.

Các tính năng chính của NGINX

NGINX có thể triển khai phục vụ nội dung HTTP động trên internet bằng cách sử dụng giao thức Fash CGI, SCGI cho tập lệnh, máy chủ ứng dụng WSGI hoặc các module Phusion Passenger. Ngoài ra còn đóng vai trò là bộ cân bằng tải phần mềm. 

NGINX sử dụng áp dụng cách tiếp cận theo hướng sự kiện không đồng bộ thay vì các luồng để xử lý các yêu cầu. Kiến trúc hướng sự kiện cung cấp hiệu suất dễ dự đoán hơn dưới tải trọng cao. Tệp cấu hình mặc định của NGINX có dạng là NGINX.conf.

Các tính năng máy chủ web và HTTP proxy

  • Khả năng xử lý lên đến tối đa hơn 10000 kết nối đồng thời mức dung lượng bộ nhớ vô cùng thấp (~2.5MB mỗi 10k kết nối HTTP không hoạt động)
  • Xử lý tập tin tĩnh (tatic file), index file và lập chỉ mục tập tin.
  • Tăng tốc Reverse proxy với bộ nhớ đệm.
  • Cân bằng tải đơn giản (load balancing) và khả năng chịu lỗi.
  • Hỗ trợ mã hóa TLS/SSL với SNI và OCSP, thông qua OpenSSL
  • Hỗ trợ giao thức FastCGI, SCGI, uWSGI với bộ nhớ đệm
  • Máy chủ ảo hoạt động dựa trên địa chỉ IP và tên
  • Khả năng Tương thích IPv6
  • Hỗ trợ WebSockets kể từ 1.3.13, bao gồm hoạt động như một proxy ngược và thực hiện cân bằng tải cho các ứng dụng WebSocket
  • Nâng cấp giao thức HTTP/1.1, hỗ trợ HTTP/2
  • Hỗ trợ nhúng mã PERL

Các tính năng Mail proxy

Có những phương thức xác thực như sau 

  • Hỗ trợ TLS/SSL
  • Hỗ trợ STARTTLS
  • POP3, SMTP, và IMAP proxy

>>> Có thể bạn quan tâm: jQuery là gì? Hướng dẫn cài đặt và sử dụng jQuery

So sánh Apache Server và NGINX server 

Trong số các máy chủ web phổ biến hiện nay, Apache là một server mã nguồn mở miễn phí và còn là một trong những đối thủ của NGINX. Apache đã có từ những năm 90 và cũng có một cộng đồng người dùng ưa chuộng lớn. Một chút so sánh sau đây: 

  • Apache là chương trình máy chủ HTTP mã nguồn mở dành cho máy chủ đối thoại qua giao thức HTTP, trong khi NGINX là máy chủ web không đồng bộ hiệu suất cao.
  • Hỗ trợ, sửa lỗi và phát triển của Apache được quản lý và duy trì bởi một cộng đồng người dùng lớn trên khắp thế giới. Còn về NGINX thì hỗ trợ và bảo trì của NGINX được thực hiện bởi một doanh nghiệp chủ quản riêng biệt.
  • Với NGINX có thể xử lý nhiều kết nối, còn với Apache, một luồng chỉ được liên kết với một kết nối. 
  • Vẫn còn hạn chế của NGINX là không hỗ trợ .htaccess

Hỗ trợ hệ điều hành

Khả năng tương thích với hệ điều hành luôn là một trong mối quan tâm mà bạn cần xem xét khi chọn phần mềm. Ngay cả NGINX và Apache đều có thể hỗ trợ chạy trên nhiều hệ điều hành hỗ trợ hệ thống Unix. Tuy nhiên, hiệu năng của NGINX trên Windows vẫn thật sự chưa tốt như trên các nền tảng khác.

Hỗ trợ người dùng

Từ người dùng đầu tiên cho đến các chuyên gia thì luôn có một cộng đồng lớn có thể hỗ trợ khi gặp sự cố. Trong khi cả NGINX và Apache đều vẫn đang hỗ trợ qua email và Stack Overflow, so với Apache thiếu sự hỗ trợ từ công ty của mình.  

Hiệu năng

NGINX có thể đồng thời chạy lên đến 1.000 kết nối nội dung tĩnh nhanh hơn gấp 2 lần so với Apache và tiết kiệm bộ nhớ hơn một chút. Tuy nhiên, khi so sánh song song hiệu suất của chúng khi chạy nội dung động, cả hai đều cho ra cùng tốc độ. Nhưng về NGINX thật sự là một lựa chọn tốt hơn cho những người có một trang web tĩnh. 

Hướng dẫn kiểm tra và cài đặt NGINX

NGINX là một web server sử dụng kiến trúc đơn luồng và mạnh mẽ, vì thế nó hoạt động hiệu quả hơn Apache server nếu được cấu hình chính xác. Vậy làm thế nào để kiểm tra và cài đặt web server này? Cùng tìm hiểu sau đây.

Kiểm tra NGINX trên website 

Nhờ vào HTTP header, bạn có thể kiểm tra website của mình có chạy NGINX hay không. Theo đó, để có thể thây HTTP header, bạn có thể sử dụng network tab trong Chrome Devtools. Nếu bạn chưa biết thao tác thì có thể tham khảo cách sau: 

  • Bước 1: Trên Chrome, bạn hãy mở trang cần kiểm tra
  • Bước 2: Tại bước này, bạn hãy nhấn phím F12 hoặc tổ hợp phím Ctrl + Shift + I
  • Bước 3: Lúc này, cửa sổ Chrome Devtools sẽ xuất hiện
  • Bước 4: Nếu không nhìn thấy Network tab, bạn hãy nhấp vào biểu tượng “>>” để mở rộng tab, sau đó chọn Network.  

Ngoài ra, bạn cũng có thể dùng Gtmetrix hoặc Pingdom.

Cách cài đặt NGINX

Hiện nay có 2 cách để thực hiện cài đặt NGINX, bạn có thể sử dụng package (gói) có sẵn hoặc cài đặt từ source. Mặc dù hình thức đầu tiên nhanh và dễ dàng hơn, nhưng cài đặt từ source có thể cung cấp khả năng cài đặt thêm các module khác giúp web server NGINX hoạt động mạnh mẽ hơn. Bên cạnh đó, nó còn cho phép người dùng tùy chỉnh sao cho phù hợp với nhu cầu của ứng dụng.

Để cài đặt NGINX theo gói Debian dựng sẵn, bạn chỉ cần làm:

“sudo apt-get update 

sudo apt-get install nginx”

Sau khi quá trình cài đặt hoàn tất, bạn có thể kiểm tra câu lệnh trên đã cài đặt NGINX chưa bằng cách chạy lệnh sau đây: 

“sudo nginx -v

nginx version: nginx/1.18.2”

Web server mới sẽ được cài đặt tại thư mục /etc/nginx/, nếu bạn mở thư mục này và bạn sẽ thấy nhiều thư mục và tệp tin con khác. Tuy nhiên, bạn chỉ cần chú ý đến tệp tin quan trọng nginx.conf và thư mực sites-available.

>>> Có thể bạn quan tâm: RSS là gì? Hướng dẫn cài đặt & sử dụng RSS mới nhất

Hướng dẫn sử dụng NGINX để Load Balancer

  • Bước 1: Config trên máy 10.10.10.1 như sau:

upstream proserver {

server 10.10.10.9:9002;

server 10.10.10.10:9002;

}

Trong đó 2 servers là 10.10.10.9 và 10.10.10.10 đang chạy dịch vụ ở cổng 9002

  • Bước 2: Config để máy 10.101.10.1 đón ở cổng 9000 như sau

server {

proxy_buffering off;

client_max_body_size 5M;

listen 9000;

location / {

proxy_pass http://proserver;

}

}

  • Bước 3: Start NGIИX bằng lệch: sudo server nginx restart
  • Bước 4: Tiến hành sửa lại config với tham số weight bằng lệch sau:

upstream proserver {

server 10.10.10.9:9002 weight=1;

server 10.10.10.10:9002 weight=2;

}

Như vậy, bài viết trên đây đã giới thiệu khái quát về NGINX, cũng như cho ta một cái nhìn tổng quan về các lợi ích, tính năng của NGIИX so với máy chủ và so sánh NGINX với Apache. Mỗi máy chủ đều có những ưu và nhược điểm riêng, tùy vào mục đích sử dụng và khả năng tương thích, mà  bạn có thể thích ứng và làm việc hiệu quả. 

Liên hệ với chúng tôi để biết thêm thông tin chi tiết về dịch vụ của FPT Smart Cloud