Tổng quan về NGINX

Tram Ho

Tổng quan

Bạn từng rơi vào trường hợp, bạn đã tạo ra một ứng dụng Web khá hay ho muốn chia sẻ cho mọi người sử dụng với mục đích thương mại hay chỉ đơn giản là public cho nhóm bạn sử dụng,…  và bạn nghĩ đến việc tìm một Web server cho việc lưu trữ (host) nó. Bạn lên Google search kết quả cho bạn một đống các web server Apache HTTP Server, Nginx , IIS, Google Server, … bạn hoang mang nên chọn cái nào đây thì trong bài viết này tôi giới thiệu cho các bạn về NGINX.Chúng ta cùng đi tìm hiểu nhé

Ứng dụng của bạn có thể bao gồm nhiều tệp tin tĩnh (static files) — HTML, CSS và JavaScript, một backend phục vụ các API hoặc thậm chí nhiều webservice. NGINX có thể là cái bạn đang tìm kiếm và có một vài lý do cho điều đó.

I. NGINX là gì?

NGINX là một web server mạnh mẽ và sử dụng kiến trúc đơn luồng, hướng sự kiện vì thế nó hiệu quả hơn Apache server nếu được cấu hình chính xác. Nó cũng có thể làm những thứ quan trọng khác, chẳng hạn như load balancing, HTTP caching, hay sử dụng như một reverse proxy.

II. 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

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

Đọc đến đây nhiều bạn sẽ đặt câu hỏi tại sao lại là Apache mà không là một web server nào khác thì câu trả lời đơn giản nhất cho câu hỏi này bởi vì Apache đứng top 1 trong bảng xếp hạng các máy chủ web phổ biến nhất theo số liệu của W3Techs(1/3/2020) với 39.4% và NGINX đứng ngay sau với 31.8%

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.

III. 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:

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.
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ó.

Trên đây sơ lược qua về NGINX , ở phần tiếp theo mình sẽ đi vào phần cài đặt cũng như cấu hình NGINX .Nếu các bạn thấy NGINX phù hợp với tiêu chí chọn server của mình thì hãy đón đọc phần tiếp theo.

IV. Tài liệu tham khảo

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo