NGINX là gì? Tổng quan về Web Server Nginx - Stolennguyen Website

NGINX là gì? Tổng quan về Web Server Nginx

nginx là gì

Chào các bạn, hôm nay mình sẽ cùng các bạn đi tìm hiểu về Nginx là gì và tổng quan về web server nginx.

Nginx được phát âm là “engine-ex”, là tên của một loại máy chủ web mã nguồn mở khá nổi tiếng. Trong phiên bản đầu tiên, nó hoạt động để phục vụ web HTTP. Tuy nhiên, ngày nay nó cũng đóng vai trò như một máy chủ proxy (reverse proxy server), cân bằng tải (load balancer), proxy mail cho IMAP, POP3, SMTP hoặc dùng làm HTTP cache.

Nginx được Igor Sysoev bắt đầu nghiên cứu vào năm 2002, nhưng đến năm 2004 mới được công khai phát hành lần đầu tiên. Igor xem dự án này để giải quyết vấn đề C10K (C10k là thách thức của việc quản lý mười nghìn kết nối cùng một lúc)

Ngày nay, thậm chí còn có nhiều kết nối hơn mà các máy chủ web phải xử lý. Vì lý do đó, NGINX cung cấp kiến ​​trúc hướng sự kiện và không đồng bộ. Tính năng này làm cho NGINX trở thành một trong những máy chủ đáng tin cậy nhất về tốc độ và khả năng mở rộng.

Do khả năng tuyệt vời của nó để xử lý nhiều kết nối và tốc độ, nhiều trang web có lưu lượng truy cập cao đã sử dụng dịch vụ của NGINX. Một số người khổng lồ trực tuyến này là Google, Netflix, Adobe, Cloudflare, WordPress.com và nhiều hơn nữa.

NGINX hoạt động như thế nào?

Trước khi tìm hiểu thêm về NGINX, hãy xem cách máy chủ web hoạt động. Khi người dùng mở một trang web, trình duyệt sẽ kết nối với máy chủ của trang web đó. Sau đó, máy chủ tìm kiếm các tệp được yêu cầu cho trang và gửi nó đến trình duyệt. Đây chỉ là loại yêu cầu đơn giản nhất.

Cách hoạt động của Nginx
Cách hoạt động của Nginx

Nginx được xây dựng để cung cấp việc sử dụng bộ nhớ thấp và đồng thời cao. Thay vì tạo các quy trình mới cho mỗi yêu cầu web, Nginx sử dụng cách tiếp cận theo hướng sự kiện, không đồng bộ trong đó các yêu cầu được xử lý trong một luồng.

Một số tính năng phổ biến được thấy trong Nginx bao gồm:

  • Reverse proxy với bộ nhớ đệm
  • IPv6
  • Cân bằng tải
  • Hỗ trợ FastCGI với bộ nhớ đệm
  • WebSockets
  • Xử lý tệp tĩnh, tệp chỉ mục và tự động lập chỉ mục
  • TLS / SSL với SNI

So Sánh Nginx và Apache

Apache là một máy chủ web nguồn mở phổ biến khác. Về mặt số liệu, Apache là máy chủ web phổ biến nhất hiện có và được sử dụng bởi 43,6% (giảm từ 47% vào năm 2018) của tất cả các trang web có máy chủ web đã biết, theo W3Techs. Nginx đứng thứ hai với 41,8%.

Netcraft đã thực hiện một cuộc khảo sát trên 233 triệu tên miền và tìm thấy mức sử dụng Apache ở mức 31,54% và sử dụng Nginx ở mức 26,20%.

Kiến trúc cơ bản

Apache được cấu hình theo kiểu “prefork”: nghĩa là có bao nhiêu request, có bấy nhiêu process (dù request đó là request hình ảnh, file .txt hay script .php. Đương nhiên với những file tĩnh (file .txt, file .css hay các file hình ảnh) cũng được Apache tạo process để xử lý nốt. Vì vậy, Apache tốn rất nhiều tài nguyên hệ thống.

Trong khi đó, Nginx được cấu hình theo kiểu bất đồng bộ (asynchronous): nghĩa là 1 nginx process có thể xử lý nhiều request liên tục, dựa vào số lượng tài nguyên còn lại của hệ thống.

Nhờ kiểu cấu hình như vậy, Nginx có thể “nhúng” các file lập trình (như .php) vào process riêng của nó. Nghĩa là mọi request yêu cầu data được 1 process riêng của nginx thực hiện, và trả data lại cho client bằng reverse proxy.

Bên cạnh đó, đối với những file tĩnh (file .txt, file .css hay các file hình ảnh), Nginx sẽ trả dữ liệu mà không cần sự can thiệp của các module server side.

Nginx nhanh hơn Apache?

Câu trả lời là không hẳn vậy. Vì nó tùy thuộc vào cách định nghĩa “nhanh” của bạn. Đương nhiên nó không thể nhanh hơn tốc độ mạng được cho phép của bạn. Nhưng nó sẽ nhanh hơn trong trường hợp:

  1. Load file tĩnh nhanh hơn: như đã nói, Nginx sẽ load file tĩnh mà không cần sự trợ giúp của các module server side.
  2. Chịu được nhiều request liên tục: vì tính “bất đồng bộ”, nginx cố gắng hết khả năng không bỏ qua bất kì request nào. (Trong khi Apache chỉ nhận số lượng request nhất định đã được xác định trước, và loại bỏ số còn lại).

Do đó nếu bạn định nghĩa “nhanh” là “số lượng user liên tục request (cả request đến file tĩnh và động) mà server có thể xử lý” thì câu trả lời là có.

Cách kiểm tra server đang chạy nginx

Hầu hết mọi website, bạn có thể dễ dàng kiểm tra web server nginx bằng cách kiểm tra HTTP header của máy chủ để xem rằng nó đang chạy web server NGINX hoặc là Apache.

Bạn có thể thấy HTTP header bằng cách vào website. Ví dụ: bạn vào trang Stolenguyen nhấn F12, chọn tab network

Một cách khác cũng khá đơn giản là bạn có thể vào Terminal (trên macbook) và gõ lệnh bên dưới vào

curl -I -X GET stolennguyen.website

Bạn chỉ việc thay stolennguyen.website bằng website bạn cần kiểm tra là có thể check được Server của website đó là gì rồi, rất đơn giản đúng không nào!

Tổng Kết

Như vậy, qua bài viết “Nginx là gì? Tổng quan về server nginx” hy vọng các bạn cập nhật được thêm kiến thức về nginx cho mình!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *