So sánh web server NGINX và Apache

Có 6 yếu tố chính để đánh giá NGINX và Apache

  • Hiệu suất cho các nội dung tĩnh vs động
  • Hỗ trợ hệ điều hành
  • Bảo mật
  • Tính linh hoạt
  • Tài liệu hướng dẫn
  • Hỗ trợ

Chúng ta sẽ thấy rằng cả hai là đối thủ cạnh tranh xứng tầm với nhau.

  • Apache với file .htaccess, làm cho nó trở nên đặc biệt hấp dẫn hơn với người dùng.
  • NGINX chuyên hỗ trợ nội dung động, và một phần do các tính năng tiên tiến hơn của nó.
  • NGINX được sử dụng rất phổ biến nhất trên VPS và Dedicated Hosting.
  • Cuối cùng, chúng ta sẽ hãy xem NGINX và Apache đâu là web server tốt nhất?
  • Nhưng trước hết tôi muốn giới thiệu qua cho các bạn về web server là gì?

Web Server là gì?

Web server hay còn được gọi là máy chủ web, nó 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.

cach-web-server-hoat-dong

Tóm lại bạn có thể hiểu web server là máy chủ, nơi lưu các file của một website như (HTML, CSS, JavaScript, Ảnh). Sau đó cung cấp chúng cho người dùng, thông qua mạng internet.

Thị phần của Apache và NGINX

Cho đến năm 2012, hơn 65% các trang web dựa trên Apache. Sự phổ biến không phải chỉ vì lịch sử lâu đời của Apache. Đây là một trong những phần mềm tiên phong đầu tiên cho sự phát triển của World Wide Web. Tuy nhiên, thời thế đã thay đổi. Theo W3Tech.com, kể từ ngày 14 tháng 1 năm 2019, số lượng các trang web sử dụng máy chủ Apache (44,4%) chỉ hơn Nginx một chút (40,9%). Nginx và Apache chiếm lĩnh gần 85% thị trường máy chủ web.

Nginx và Apache chiếm lĩnh gần 85% thị trường máy chủ web

Apache là gì ?

apache_logo

Apache là một web server rất phổ biến đến tận ngày nay. Được duy trì và phát triển bởi Apache Software Foundation.

Nó là một free open source, được sử dụng trên rất nhiều website nổi tiếng như: IBM, Adobe, VMware, LinkedIn, Facebook, AT&T, Siemens, eBay.. (nguồn).

Nếu bạn đã từng nghe nói đến LAMP (Linux, Apache, MySQL, PHP).

Một trong những web stack ( nền tàng web) phổ biến nhất hiện nay và Apache chính là một trong số đó.

Mặc dù ngày nay còn rất nhiền tảng web khác như (NodeJS, rich clients JS frameworks, various cloud services…)

Nhưng Apache vẫn rất được yêu thích và tin dùng.

Web server Apache có một tập hợp phong phú các tính năng có thể được kích hoạt thông khoảng 60 module chính thức (có nhiều cái không được phát hành chính thức).

Nhiều năm qua, 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ễ).

Ngày nay dung lượng website ngày càng lớn và cần có những phương pháp mới.

Cách hoạt động của 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 cách Multi-Processing module (MPMs)

  • Process model: Đây là bản gốc của phương pháp “pre-fork”; nó cũng không vận hành tốt với nhiều kết nối đồng thời, vì nó tiêu tốn rất nhiều RAM và thậm chí có thể từ chối các kết nối ở thời điểm load cao điểm. Các trang web nhỏ hơn sẽ không nhận thấy điều này, nhưng các trang web lớn có khả năng sẽ bị như vậy.
  • Worker Process: Điều này tạo ra một quá trình điều khiển duy nhất có trách nhiệm 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. Mặc dù mô hình này độ co giãn tốt hơn nhiều so với các phương pháp pre-fork, nó vẫn có thể mắc phải vấn đề scale khi trang web có lưu lượng truy cập cao.
  • 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ý). Kể từ Apache 2.4, event model đã được coi là ổn định và bây giờ cũng là thiết lập mặc định nếu hệ điều hành có thể hỗ trợ nó.

Bạn cũng có thể thử các tùy chọn compile-time and run-time options để cải thiện hiệu suất của Apache.

NGINX là gì ?

Nginx cũng là một open source web server được viết bởi Igor Sysoev, một kỹ sư người Nga.

Dự án này được bắt đầu từ năm 2002, và được hoàn thành và công bố vào năm 2004.

Kể từ đó NGINX đã trở thành một tiêu chuẩn phổ biến cho các trang web có performace cao, và khả năng mở rộng.

Hàng chục triệu trang web ngày nay sử dụng NGINX, bao gồm top 100.000 trang web lớn nhất thế giới.

Gồm các công ty như: Airbnb, Box, Dropbox, Netflix, Tumblr, WordPress.com…

Do nó được sinh ra để là tối ưu hóa hiệu suất theo quy mô lớn.

Nginx thường vượt trội so với các web server phổ biến khác trong các thử nghiệm.

Đặc biệt là trong các tình huống có nội dung tĩnh và / hoặc nhiều request cùng lúc.

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

NGINX đã được tạo ra để đáp ứng với thách thức C10K.

Xử lý ít nhất 10.000 khách hàng kết nối đồng thời trên một máy chủ duy nhất.

NGINX sử dụng một kiến trúc event-driven không đồng bộ để xử lý những số lượng kết nối khổng lồ này.

nginx-architecture

Bản đồ của kiến trúc event-driven NGINX Event-Driven ArchitectureNGINX giúp dự đoán RAM và CPU, cũng như độ trễ, cho việc tải nhiều / dao động bất thường.

Với kiến trúc này làm cho mang đến khả năng chịu tải cao hơn, tận dụng dự đoán về cách sử dụng bộ nhớ RAM, sử dụng CPU, và độ trễ để đạt hiệu quả cao hơn.

Sự khác biệt chính giữa NGINX và Apache, về các event model, là NGINX không thiết lập worker process thêm cho mỗi kết nối.

Trong hầu hết các trường hợp, các cấu hình NGINX đề nghị được chạy một worker process cho mỗi CPU, tối đa hóa hiệu quả của phần cứng.

NGINX cũng có một bộ tính năng phong phú như:

  • Reverse proxy with caching
  • IPv6
  • Load balancing
  • FastCGI support with caching
  • WebSockets
  • Handling of static files, index files, and auto-indexing
  • TLS/SSL with SNI

NGINX hỗ trợ FastCGI và SCGI xử lý để phục vụ các nội dung động như PHP và Python.

Nó sử dụng các LEMP web stack (nền tảng web): một biến thể của LAMP (Linux, “En-juhn-ex”, MySQL, PHP).

NGINX vs Apache: So sánh Hiệu suất, hỗ trợ, bảo mật

Hiệu suất

Trong so sánh này, hãy xem 2 web server này cung cấp nội dung tĩnh và động cái nào nhanh hơn.

Nội dung tĩnh

NGINX là nhanh hơn khoảng 2,5 lần so với Apache dựa trên kết quả của một thử nghiệm benchmark chạy lên đến 1.000 kết nối đồng thời.

Ở một bechmark khác với 512 kết nối đồng thời, cho thấy NGINX là nhanh hơn khoảng hai lần và tiêu thụ ít bộ nhớ một chút (4%).

Rõ ràng, NGINX phục vụ nội dung tĩnh nhanh hơn nhiều so với Apache.

Nếu bạn cần phải phục vụ rất nhiều nội dung tĩnh ở mức cao, NGINX có thể là một công cụ trợ giúp thực sự.

Nội dung động

Một thử nghiệm năm 2015 so sánh các nội dung động được phân phối bởi Apache và NGINX.

Cho thấy rằng Apache event MPM, khi ghép nối với các module PHP-FPM, có thể xử lý đồng thời giống như NGINX với PHP.

Về mặt hiệu năng cho thấy kết quả tương tự, không có khác biệt.

Lý do cho điều này là toàn bộ thời gian xử lý yêu cầu được sử dụng trong môi trường PHP, chứ không phải là một phần lõi của máy chủ web.

Thời gian chay trong các môi trường PHP, là khá giống nhau giữa cả hai máy chủ web.

apache-vs-nginx-dynamic-content-benchmark

Điểm benchmark trên Speedemy web server có kết quả, tương tự như sử dụng cả Apache và NGINX để phục vụ nội dung động.

Xét về PHP (và các ngôn ngữ khác), hiệu suất máy chủ trang động là thực tế tương đương với một thiết lập Apache module thích hợp (PHP-FPM + FastCGI).

Nếu bạn thực sự muốn tăng tốc độ trang động, bạn có một vài lựa chọn: thêm một lớp bộ nhớ đệm Varnish hoặc Memcached caching.

Thật không may, trang của NGINX không dịch để phục vụ các trang động. Cả hai máy chủ web đều ghi điểm bằng nhau về điểm này.

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

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.

Nhưng hiệu suất Windows của nó không tăng mạnh như các nền tảng khác.

Về điểm nay, Apache mạnh hơn một chút.

Bảo mật

Cả Apache và NGINX đều có thành tích tuyệt về bảo mật về bộ mã nguồn của mình.

Mã nguồn của NGINX khá nhỏ gọn, do đó chắc chắn là một điểm cộng lớn từ góc độ an ninh.

Apache từng được báo cáo là có cách lỗ hổng bảo mật từ version 2.2 và 2.4.

NGINX cũng có một danh sách các tư vấn về vấn đề bảo mật gần đây.

Apache cung cấp lời khuyên cấu hình để xử lý cuộc tấn công DDoS, cũng như các mod_evasive để ứng phó với HTTP DoS, DDoS, hoặc brute force attacks.

Bạn cũng có thể tìm thấy các chủ đề để đối phó với các mối đe dọa DDoS trên blog NGINX.

Tính dễ tương thích

Các web server có thể tùy biến thêm bằng cách viết các module.

Apache đã cung cấp các dynamic module từ lâu, vì vậy tất cả các module Apache đều hỗ trợ điều này.

Tuy nhiên,với NGINX thì lại là một vấn đề khác. Đầu năm 2016 NGINX mới hỗ trợ cho các dynamic module.

Trước đây, NGINX cần các admin để biên dịch các module vào nhị phân NGINX.

Hầu hết các module chưa hỗ trợ nạp động, nhưng theo thời gian họ có lẽ sẽ có.

Apache rõ ràng dẫn đầu ở điểm này.

Dynamic Module Loading & Modules

Cả Apache và NGINX có khá nhiều các module với nhiều tính năng:

Apache module:

Thật không may, các module bên thứ ba dường như không được update và kiểm tra.

apache-nginx

So sánh NGINX và ApacheNGINX và Apache, cả hai đều có bộ tính năng phong phú và ngày càng mở rộng.

Không có cái nào tốt hơn, mà chỉ là cái này phù hợp với bạn hơn.

module NGINX:

Đánh giá qua thấy rằng Apache hay NGINX, đều khá tương đông về các tính năng mở rộng.

Hầu hết các module cần thiết như ( proxy, caching, cân bằng tải…) đều có cả trên cả 2 webserver.

NGINX tốt hơn khi hoạt động như một reverse proxy cho TCP và các kết nối TCP và email (SMTP, IMAP, POP3).

Đối với các media streaming module, phiên bản NGINX có vẻ đang hoạt động tốt hơn.

Apache .htaccess:

NGINX không có file .htaccess giống như Apache.

Với file .htaccess, cho phép bạn ghi đè lên các thiết lập toàn hệ thống trên cho mỗi thư mục;

Tuy nhiên, cho hiệu suất tối ưu, các lệnh trên .htaccess nên được đưa vào file các tệp cấu hình chính.

Điều này là không thể đổi với shared hosting.

Tài liệu

Các tài liệu cho cả Apache và NGINX đều tuyệt vời, bao gồm wiki NGINX.

NGINX cũng cung cấp các khóa đào tạo trực tuyến, họ thậm chí còn cung cấp cả chứng chỉ.

Hỗ trợ

Apache cung cấp các phương thức hộ trợ như email, IRC, Stack Overflow.

Có các dịch vụ hỗ trợ trả phí của bên thứ 3 như: OpenLogic, nhưng không có dịch vụ chỉnh thức từ Apache Foundation.

NGINX cũng tương tự Apache về các phương thức hỗ trợ.

Công ty đằng sau NGINX cung cấp một sản phẩm thương mại được gọi là NGINX Plus.

Với một loạt các tính năng bổ sung: load-balancing, media streaming, và monitoring.

Đánh giá Apache vs NGINX, webserver nào tốt hơn

Cả hai webserver hiện nay, đều có thể cạnh tranh với nhau trong hầu hết các tiêu chí.

Đối với nội dung tĩnh NGINX là vua, nhưng đối với nội dung động nó kém hơn một chút.

NGINX nổi bật với một số tính năng cao cấp của nó (media streaming, reverse proxying for non-HTTP protocols)

Người dùng shared hositng có thể thích sự tiện lợi của file .htaccess Apache.

Và Apache có khá nhiều dynamic module (NGINX mới chỉ bắt đầu thêm dynamic module)

NGINX được sử dụng chủ yếu cho VPS hosting, dedicated hosting, hoặc container cluster.

Với các website có lượt truy cập cao có nhu cầu phục vụ rất nhiều nội dung tĩnh và / hoặc streaming media sẽ hướng tới NGINX.

Nhưng đa phần cả 2 sẽ hoạt động tốt trong hầu hết mọi trường hợp.

Tham khảo:

https://dieuhau.com/nginx-va-apache-danh-gia-uu-nhuoc-diem/

https://quantrimang.com/so-sanh-nginx-va-apache-166325

Viết một bình luận