So sánh Apache và Nginx

Chia sẻ

Điểm khác nhau cơ bản giữa Apache và NGINX là về kiến trúc thiết kế của chúng. Apache sử dụng cách tiếp cận theo hướng quy trình và sẽ tạo ra một luồng mới cho mỗi yêu cầu. Trong khi NGINX sử dụng kiến trúc hướng sự kiện để có thể xử lí nhiều yêu cầu trong một luồng

Thông tin cơ bản

Apache HTTP Server

Apache HTTP Server là một nền tảng webserver mã nguồn mở còn được biết tới với tên httpd và Apache
Một vài thông tin thú vị về Apache

  • Apache Software Foundation quản lí nhãn hiệu và dịch vụ
  • Máy củ được phát triển và bảo trì bởi cộng đồng lập trình viên mở dưới sự chỉ đạo của ASF
  • Phần lớn chạy trên Linux, Apache đang vận hành 46% website khắp thế giới
  • Là một phần của gói LAMP (Linux, Apache, MySQL, PHP)

NGINX Web Server

Nginx được phát âm là “Engine X” là một webserver phát hành năm 2004 bởi Igor Sysoev. Ngày nay nó còn làm được nhiều thứ hơn một webserver
Sau đây là một số thông tin bạn nên biết về NGINX

  • Bạn đầu mọi người nghĩ rằng Nginx là một phần bổ trợ của Apache
  • Trước đây NGINX được sử dụng phần lớn để chạy các files tĩnh,  nhưng ngày nay nó đã phát triển trở thành một webserver hoàn chỉnh và có thể vận hành mọi nhiệm vụ của máy chủ
  • Ngày nay Nginx thường dùng như một reverse proxy, load balâncer, mail proxy và HTTP caching

Cả Apache và Nginx đều là những web server phổ biến cho Linux. Hiện nay, chúng đang vận hành hơn 50% lưu lượng của web toàn cầu

Kiến trúc cơ bản

Khi so sánh Apache với Nginx, sự khác biệt cơ bản là ở kiến trúc thiết kế của chúng. Có nghĩa là sự khác nhau giữa cách mà chúng xử lí các kết nối và lưu lượng và phản hồi với các luồng lưu lượng ở các tình huống khác nhau
Apache thì đi theo hướng quy trình và sẽ tạo ra một luồng mới cho một requests mới  còn Nginx đi theo hướng sự kiện cho phép xử lí nhiều requests trên một luồng

Hiệu năng

Với nội dung tĩnh

Apache: Phân phối nội dung dựa trên từng files

Nội dung tĩnh thường là các tệp được lưu trữ trên đĩa trên máy chủ, ví dụ: tệp CSS, tệp JavaScripts hoặc hình ảnh. Apache xử lý nội dung tĩnh bằng phương pháp dựa trên tệp thông thường của nó.

NGINX: Ông vua của xử lí nội dung tĩnh

Kiến trúc thiết kế của Nginx được thiết kế để xử lí nội dung tĩnh một cách nhanh chóng hơn
Khi kiểm tra với 1000 kết nối đồng thời thì Nginx chạy nhanh hơn Apache 2.5 lần
Nginx phục vụ các tài nguyên tĩnh mà PHP không cần biết về điều này. Mặt khác, Apache xử lý tất cả các yêu cầu đó với chi phí đắt đỏ đó. Điều này làm cho Nginx hiệu quả hơn và ít đòi hỏi tài nguyên hệ thống hơn.
Nginx phục vụ các nội dung tĩnh không liên quan tới PHP. Mặt khác, Apache xử lí tất cả các yêu cầu đó mà không để ý tới hiệu năng. Điều này khiên Nginx hiệu quả hơn và không phụ thuộc vào nguồn lực của hệ thống
Ảnh dưới cho thấy số request chứa nội dung tĩnh mà 2 webserver xử lí mỗi giây. Nginx đã vượt qua Apache tại đây

Với nội dung động

Apache: Xử lí nội dung động trong máy chủ

Apache có thể xử lí nội dung động trong webserver mà không cần tới một yếu tố bên ngoài
Nếu nói về hiệu năng, gần như 2 webserver có tốc độ tương đương. Dưới đây là sự so sánh của số request chứa nội dung động mà 2 webserver xử lí mỗi giây.

Nginx: Không xử lí nội dung động

Khi nói về nội dung động. Nginx không thể xử lí chúng với Webserver như cách mà Apache làm, nó sẽ đưa sang một proccess bên ngoài (Như PHP-FPM) để thực thi
Nginx chờ cho nội dung được xử lí xong quay trở lại và gửi lại cho client. Nginx có thể xử lí nội dung động khi đi kèm với SCGI handlers hoặc module FastCGI. Bạn có thể xem ảnh dưới để biết thêm

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

Apache

  • Hỗ trợ tất cả những hệ thống dựa trên Unix như Linux hoặc BSD
  • Hỗ trợ đầy đủ MS-Windows

Nginx

  • Hỗ trợ phần lớn những hệ thống dựa trên Unix
  • Hỗ trợ một phần MS-Windows

Cấu hình riêng lẻ/tập trung

Apache

  • Cho phép cấu hình riêng cho từng thư mục sử dụng file .htaccess

Nginx

  • Không cho phép cấu hình thêm

Diễn giải Request

Apache Sử dụng đường dẫn các file trong hệ thống

Nginx Sử dụng các URI

Các Module tính năng

Apache: Hơn 60 Module được cài sẵn (Sẵn sàng để bật/tắt)

Nginx: Cho phép cài thêm Module của bên thứ 3

  • Nginx có vẻ nhẹ nhàng hơn Apache vì không đi kèm quá nhiều Module chưa cần thiết

Sự linh hoạt

Apache: Hỗ trợ tuỳ biến server thông qua các Dynamic Modules

Nginx: Chưa linh hoạt bằng Apache

Sự bảo mật

Apache: Bảo mật tốt

Nginx: Bảo mật tốt hơn với codebase nhỏ hơn

Hỗ trợ

  • Cả 2 đều có hỗ trợ thông qua mailing lists, IRC, Stack Overflow, và một forum.

So sánh cơ bản Apache và Nginx

Khi nào chọn Apache hay Nginx

Chọn Apache khi

Bạn cần file .htaccess

  • Người dùng thông thường, đương nhiên, ko có quyền sửa file cấu hình chính
  • Dùng .htaccess bạn có thể chỉnh sửa những cài đặt riêng cho mỗi thư mục khác nhau
  • Ở môi trường shared hosting, Apache thực hiện tốt hơn vì hỗ trợ .htaccess riêng cho từng thư mục

Khi cần sự linh hoạt của các modules

Chọn NGINX khi

Bạn cần xử lí nhiều nội dung tĩnh hơn

Server bạn có mức lưu lượng cao

Hoặc sử dụng kết hợp cả hai: Được mà

Chia sẻ