Tìm hiểu NGINX và Apache


I, Giới thiệu

NGINX và Apache là 2 web server (máy chủ web) phổ biến và đang được sử dụng rộng rãi hiện nay. Trước 2012 thì Apache chiếm ưu thế hơn do sự phát triển lâu đời , nhưng hiện nay NGINX cũng là sự lựa chọn máy chủ web tối ưu cho những website có lưu lượng truy cập cao. Sau khi đọc và tìm hiểu các website, blogs, tổng hợp các so sánh giữa NGINX và Apache dưới đây sẽ giúp bạn đọc có cái nhìn tổng quát nhất, đưa ra sự lựa chọn Web server phù hợp cho website của mình.

II, Khái niệm

1. Web server

Web server hay còn được gọi là máy chủ web, là một chương trình sử dụng giao thức HTTP (Hypertext Transfer Protocol), để cung cấp các file để tạo thành các trang của website cho người dùng, đáp ứng nhu cầu của họ (request), cuối cùng được phân phát tới thiết bị của user. Tóm lại máy chủ là nơi để chứa toàn bộ dữ liệu hoạt động trên internet mà nó được giao quyền quản lý.

2. Apache

– Apache ( Apache HTTP Server) là một server mã nguồn mở miễn phí và được sử dụng phổ biến hiện nay.
– Mọi request sẽ được gửi đến server qua phương thức HTTP.
– Apache chạy trên các hệ điều hành như Unix, Microsoft Windows, …
– Apache đã phát triển một số phương pháp để cái thiện hiệu năng (chủ yếu là bộ nhớ RAM và độ trễ).

3. NGINX

– Nginx là một máy chủ mã nguồn mở.
– Mới ra đời, được dùng để phục vụ web HTTP, hiện được dùng để làm Reverse Proxy, Email Proxy (IMAP, POP3, SMTP) và một trình cân bằng tải (load balancer) và proxy ngược (reverse proxy) cho các máy chủ HTTP, TCP và UDP.
– Nginx sử dụng kiến trúc không đồng bộ giúp tăng tốc độ, mở rộng tính năng và đáng tin cậy hơn. Đặc biệt là trong các tình huống có nội dung tĩnh hoặc nhiều request cùng lúc ( do có thể xử lí hàng ngìn kết nối cùng lúc ).
– Được sinh ra để là tối ưu hóa hiệu suất theo quy mô lớn.

III, Cách hoạt động
1. Apache

Các phương pháp xử lý yêu cầu của Apache có thể được cấu hình theo một trong 3 Multi-Processing module (MPMs)  dưới đây:

  • Process model: Mặc định được cài đặt ở một chế độ Pre-fork mode, nghĩa là đã set trước một lượng processors nhất định, mỗi processor chỉ handle một request trong một mốc thời gian nhất định, bất kể là một php script hay là một file ảnh.
  • Worker Process: Tạo ra một quá trình điều khiển duy nhất có nhiệm vụ triển khai các tiến trình con. Mỗi tiến trình con sau đó tạo ra một số lượng cố định các thread, cũng như một listener thread. Các listener thread cho các kết nối và chuyển chúng đến một thread để xử lý khi chúng đến nơi.
  • Event model: giống với mô hình worker, nhưng nó tạo ra một listener thread mà lắng nghe cho các kết nối và chuyển chúng vào một worker thread để xử lý. MPM này xử lý các kết nối dài chạy hiệu quả hơn nhiều trên một thread duy nhất (KeepAlive xử lý).

2. Nginx

Quy trình hoạt động: Khi có yêu cầu mở một website, trình duyệt sẽ liên lạc với server chứa website đó. Server thực hiện việc tìm kiếm file yêu cầu của website đó và gửi ngược về cho trình duyệt. Nginx hoạt động theo kiến trúc Asynchronous ( có thể xử lí đồng thời nhiều request cùng một lúc, số lượng request tùy thuộc vào system resource sẵn có) và Event Driven . Kiến trúc này là những Threads được quản lý trong một tiến trình, mỗi tiến trình hoạt động dựa vào các thực thể nhỏ hơn – Worker Connections.

Worker Process sẽ nhận các truy vấn từ Worker Connections và gửi các truy vấn đó đến Process cha – Master Process. Master Process sẽ trả lại kết quả cho những yêu cầu đó. Một Worker Connections có khả năng xử lý được 1024 yêu cầu tương tự nhau. Do đó, Nginx xử lý được hàng nghìn yêu cầu mà không gặp bất cứ khó khăn gì. Nginx luôn hiệu quả hơn khi hoạt động trên môi trường tìm kiếm, thương mại điện tử và Cloud Storage.

IV, Hiệu suất
– Nội dung tĩnh: NGINX phục vụ nội dung tĩnh nhanh hơn nhiều so với Apache.
– Nội dung động: Về mặt hiệu năng cho thấy kết quả tương tự, không có khác biệt.

V, Hệ điều hành hỗ trợ
– Apache chạy trên tất cả các loại hệ thống Unix-like (Linux hoặc BSD) và hỗ trợ đầy đủ cho Microsoft Windows.
– NGINX cũng chạy trên một số hệ thống Unix hiện đại và có một số hỗ trợ cho Windows, tuy nhiên hiệu suất không được mạnh bằng.

VI, Bảo mật

Cả Nginx và Apache đều rất coi trọng tính bảo mật trên trang web của mình. Cả hai máy chủ này định kỳ phát hành báo cáo bảo mật và những tư vấn, đảm bảo rằng khía cạnh bảo mật được tăng cường ở mọi cấp độ.

VII, Kết luận
Cả Nginx web server và Apache web server đều là những điểm mạnh riêng.
Với những tiêu chí ở trên sẽ giúp chọn được web server thích hợp cho website.

Tài liệu tham khảo:

NGINX và Apache – Đâu là Web Server tốt nhất ? (Ưu Nhược Điểm)


https://viblo.asia/p/so-sanh-nginx-va-apache-lua-chon-may-chu-web-server-phu-hop-cho-trang-web-cua-ban-Az45baOwlxY#_31-apache-la-gi–10
https://vncoder.vn/bai-viet/danh-gia-chi-tiet-nginx-va-apache-web-server-nao-la-tot-nhat-
https://quantrimang.com/so-sanh-nginx-va-apache-166325

Add a Comment

Scroll Up