Những thông tin cần biết về NGINX vs. Apache
NGINX và Apache đều là các open source web server phục vụ cho hơn 50% trên tổng số tất cả các website trên toàn thế giới. NGINX được sử dụng cho 39,4% website và các trang web nổi tiếng dùng Apache như PayPal.com và Apple.com.
Cả hai nền tảng này đều là lựa chọn lý tưởng cho các website sở hữu lưu lượng truy cập cao và có khá nhiều ưu điểm tương tự nhau. Trong bài viết hôm nay Bizfly Cloud sẽ cùng tìm hiểu và làm rõ câu hỏi NGINX và Apache - lựa chọn nào là tốt nhất?
Tổng quan về NGINX
NGINX giải quyết vấn đề C10K, cho phép các máy web server xử lý 10.000 kết nối đồng thời. NGINX được thiết lập để chạy một tiến trình trên mỗi CPU nhằm đảm bảo hiệu quả tối đa.
Các tính năng của NGINX gồm có:
Load balancer
HTTP cache
Reverse proxy server cho HTTP, HTTPS, SMTP, POP3, và IMAP
Front end proxy cho Apache web servers và các server khác
NGINX thường được sử dụng cho việc load nội dung tĩnh một cách nhanh chóng, được sử dụng phổ biến do tính hiệu quả và khả năng đáp ứng của NGINX, ngoài ra NGINX cũng khá nhẹ.
Tổng quan về Apache
Apache server dành cho LAMP (Linux, Apache, MySQL, PHP) stack vì LAMP là phổ biến nhất. Có khoảng 60 mô-đun Apache chính thức có thể được cài đặt. Các mô-đun đa xử lý (MPM) của Apache có thể được chia thành 3 MPM chính.
Các mô-đun đa xử lý của Apache:
Processes - Nhiều kết nối đồng thời gây tiêu thụ một lượng lớn RAM. Tải cao có thể gây ra sự từ chối kết nối gây ảnh hưởng đến các trang web lớn.
Workers - Hoạt động như một quy trình kiểm soát duy nhất chịu trách nhiệm cho các quy trình con (child process). Các tiến trình con tạo ra số lượng cố định các luồng và một luồng nghe (listener thread). Listener thread lắng nghe các kết nối để xử lý. Đây là phương pháp có khả năng mở rộng, có thể xử lý các trang sở hữu lưu lượng truy cập cao, nhưng sẽ gặp phải sự cố nếu lưu lượng đạt rất cao.
Events - Tương tự như mô hình worker ở trên, mô hình event tạo ra một listener thread lắng nghe các kết nối để chuyển chúng đến một luồng worker. Mô hình này hiệu quả hơn nhiều. Apache 2.4 sử dụng events cho các Apache config mặc định của mình.
Apache download: https://httpd.apache.org/download.cgi
NGINX và Apache: Hiệu suất
Static content (Nội dung tĩnh) - Khi so sánh NGINX và Apache 2.4 với event MPM, chạy 1.000 kết nối đồng thời, kết quả cho thấy NGINX chạy nhanh hơn 2,5 lần so với Apache. Về nội dung tĩnh, NGINX là lựa chọn rõ ràng về tốc độ và hiệu quả.
Dynamic content (Nội dung động) - Nếu bạn đã có một trang web động bằng WordPress, Joomla, Drupal, ... bạn có thể cân nhắc sử dụng NGINX hoặc Apache. Nội dung tĩnh trong các tình huống này ít hơn rất nhiều so với nội dung động.
Một lần nữa xem xét các bài kiểm tra điểm chuẩn của Speedemy và kết quả hoàn toàn giống nhau. Trong trường hợp này không có sự vượt trội so với NGINX. Tại sao lại như vậy? Hầu hết các request đang xử lý trong PHP runtime environment khá giống nhau cho cả hai web server.
NGINX và Apache: Hệ điều hành
Apache có thể chạy trên Linux, BSD,... và hỗ trợ đầy đủ cho Windows.
NGINX chạy trên các hệ thống tương tự Unix nhưng có hỗ trợ hạn chế cho Windows. Hiệu suất NGINX trên Windows khá thấp so với các nền tảng khác.
NGINX và Apache: Hỗ trợ & Tài liệu
Apache sở hữu mạng lưới hỗ trợ cộng đồng lớn thông qua mailing lists, IRC và Stack Overflow. Ngoài ra, còn có tùy chọn hỗ trợ bên thứ ba từ OpenLogic.
Tương tự, NGINX cũng có hỗ trợ thông qua mailing lists, IRC và Stack Overflow. NGINX còn có một sản phẩm có tên NGINX + có hỗ trợ riêng của Google bao gồm nhiều tính năng hơn.
Cả NGINX và Apache đều cung cấp tài liệu, bao gồm hầu hết mọi chủ đề và tính năng cần thiết. Tài liệu này bao gồm release notes, user guides, tutorials... NGINX thậm chí có wiki riêng!
NGINX vs Apache: Bảo mật
Cả NGINX và Apache sở hữu tính bảo mật tuyệt vời. Apache công khai chia sẻ các cập nhật bảo mật và các bản phát hành trong các báo cáo bảo mật của mình. Họ phác thảo bất kỳ lỗ hổng bảo mật đã biết nào được xác định là một phần của Apache 2.4.
Tương tự, với NGINX, bạn có thể nêu ra các vấn đề bảo mật mà mình gặp phải, sau đó sẽ được giải đáp bởi cộng đồng.
Apache và NGINX cung cấp cho người dùng các mẹo bảo mật, chẳng hạn như cách xử lý các cuộc tấn công DDoS và cách giảm thiểu các cuộc tấn công này.
NGINX vs Apache: Tính linh hoạt
Apache đã có khả năng tải mô-đun động từ khá lâu, có nghĩa là tất cả các mô-đun Apache đều hỗ trợ điều này. Còn NGINX mới chỉ nhận được hỗ trợ cho tải mô-đun động vào đầu năm 2016. Trước đó, các quản trị viên phải tự biên dịch các mô-đun.
Mặt khác, cả NGINX và Apache đều có các mô đun tính năng được phát triển như sau:
Apache - Danh sách mô-đun chính thức và mô-đun Wikipedia
NGINX - Danh sách mô-đun chính thức và mô-đun của bên thứ ba
NGINX hoàn toàn có thể hoạt động như một reverse proxy và các tính năng có trong NGINX +.
NGINX vs Apache: Kết luận
Cả NGINX web server và Apache web server đều là những ứng cử viên sáng giá trong các lĩnh vực khác nhau. NGINX là người chiến thắng rõ ràng đối với các nội dung tĩnh, trong khi nội dung động không tạo ra sự khác biệt thực sự giữa các máy chủ web.
Apache xuất sắc hơn xét về tính linh hoạt, đặc biệt đối với shared hosting user. Tệp .htaccess của Apache và các mô-đun động chắc chắn sẽ phù hợp hơn, trong khi NGINX sẽ tốt hơn cho VPS và dedicated hosting.
Theo Bizfly Cloud chia sẻ
>> Có thể bạn quan tâm: Sửa lỗi "httpd: apr_sockaddr_info_get() failed" khi start dịch vụ Apache