# NGINX vs Apache ? How does it work? Why is NGINX compared to Apache --> How is it stronger and weaker? ###### tags: `research` `devops` `web-server` # Tiếng việt ## NGINX là gì? ![](https://i.imgur.com/1b5lVTz.png) - NGINX hay còn được viết cách điệu là NGIИX. - Một web server mã nguồn mở vô cùng mạnh mẽ và nổi tiếng phục vụ web HTTP. - Sử dụng kiến thức đơn luồng, (event-driven) không đồng bộ (asynchronous) để có hiệu suất và sự ổn định tối đa. - Phục vụ các công việc như như load balancing, HTTP caching, hay sử dụng như một reverse reverse proxying, media streaming và email proxy như IMAP, POP3, và SMTP…. ## Cách thức hoạt động của NGINX NGINX là một webserver --> Tìm hiểu qua web-server ![](https://i.imgur.com/k0BamhH.png) - Web server là máy tính lớn được kết nối với tập hợp mạng máy tính mở rộng. - Là kho để chứa toàn bộ dữ liệu hoạt động trên internet mà nó được giao quyền quản lý. - Web server có thể là phần cứng hoặc phần mềm cũng có thể bao gồm cả hai --> Thế NGINX thì ![](https://i.imgur.com/k7HwOJM.png) - Được xem như là một single thread nhưng không hoạt động theo cách đó - NGINX thực hiện theo kiến trúc bất đồng bộ (asynchronous), hướng sự kiện (event driven) - Các luồng tương tự được quản lý trong một tiến trình - Mỗi tiến trình (process) chứa các đơn vị nhỏ hơn gọi là worker connection - Work connection này chịu trách nhiệm xử lý các threads cung cấp các yêu cầu của work process và sẽ gửi đến master process. - Mỗi worker connection có thể xử lý tới 1024 yêu cầu tương tự nhau --> NGINX có thể sử lý hàng ngàng request không gặp trở ngại ![](https://i.imgur.com/mcGYK0y.png) ## Tính năng của NGINX ![](https://i.imgur.com/bKu4XNg.png) Nginx bao gồm hàng loạt tính năng vượt trội sau đây: * Có khả năng xử lý cùng một lúc hơn 10.000 kết nối với bộ nhớ thấp * Phục vụ Static Files và lập chỉ mục cho tập tin * Dùng bộ nhớ đệm Cache để tăng tốc Proxy ngược, cân bằng tải đơn giản và khả năng chịu lỗi * Hỗ trợ tăng tốc với bộ nhớ đệm của WSGI, SCGI, FastCGI và các máy chủ Memcached * Có cấu hình linh hoạt và khả năng lưu lại nhật ký truy vấn. * Chuyển hướng lỗi 3XX – 5XX * Sử dụng Regular Expressions để Rewrite URL * Hạn chế tỷ lệ đáp ứng truy vấn * Giới hạn truy vấn từ một địa chỉ hoặc số kết nối đồng thời * Có khả năng nhúng mã PERL * Tương thích và hỗ trợ IPv6 * Hỗ trợ WebSockets * Hỗ trợ truyền tải file MP4 và FLV * Rewrite URL,… ![](https://i.imgur.com/9HXPSMZ.png) *Các tính năng Mail proxy* Có những phương thức xác thực như sau * Hỗ trợ TLS/SSL * Hỗ trợ STARTTLS * POP3, SMTP, và IMAP proxy ## APACHE Là gì ? ![](https://i.imgur.com/lUbf177.png) - Apache (chương trình máy chủ HTTP) có tên đầy đủ là Apache HTTP Server. - Một server mã nguồn mở miễn phí và được sử dụng phổ biến hiện nay. - Cũng giống như Nginx, Apache là chương trình máy chủ HTTP là một chương trình dành cho máy chủ đối thoại qua giao thức HTTP. ## Apache hoạt động như thế nào ? - Tuy được gọi là Apache web server nhưng nó không phải là server vật lý mà Apache chính là một phần mềm chạy trên server đó. - Nhiệm vụ chính của Apache là thiết lập kết nối giữa server và browser, Nhiệm vụ chính của Apache là thiết lập kết nối giữa server và browser và đây là mã nguồn đa nền tảng có thể dùng cho cả UNIX lẫn Window - Ví dụ: Khi người dùng muốn truy cập vào trong webpage - Apache sẽ thực hiện load toàn bộ thông tin file, các thành phần nhúng vào trang cho người dùng. - Theo sau đó là đảm bảo và duy trì tài nguyên web và đảm bảo về bảo mật. - Apache là một nền tảng module có độ tùy biến khá cao --> Modules cho phép quản trị viên server có thể tắt hoặc thêm vào các chức năng. ## Apache có những tính năng gì ? Apache cũng có các tính năng mà Nginx có như là : * Static file serving. * SSL/TLS support. * Virtual hosts. * Reverse proxying. * Load balancing. * Compression. * Access controls. * URL rewriting. * Custom logging. * Server-side includes. * Limited WebDAV. * FLV streaming. * FastCGI. Không những thế, Apache lại có những chức năng mở rộng hơn so với Nginx như sau: * digest access authentication * CGI * administrative console * .htaccess ![](https://i.imgur.com/RuIGx1w.png) ## So sánh Apache Server và NGINX server ![](https://i.imgur.com/fkplsDY.png) - Apache là chương trình máy chủ HTTP mã nguồn mở dành cho máy chủ đối thoại qua giao thức HTTP, trong khi NGINX là máy chủ web không đồng bộ hiệu suất cao. - Hỗ trợ, sửa lỗi và phát triển của Apache được quản lý và duy trì bởi một cộng đồng người dùng lớn trên khắp thế giới. Còn về NGINX thì hỗ trợ và bảo trì của NGINX được thực hiện bởi một doanh nghiệp chủ quản riêng biệt. - Với NGINX có thể xử lý nhiều kết nối, còn với Apache, một luồng chỉ được liên kết với một kết nối. - Vẫn còn hạn chế của NGINX là không hỗ trợ .htaccess ![](https://i.imgur.com/JR63Otc.png) Hỗ trợ hệ điều hành - Khả năng tương thích với hệ điều hành luôn là một trong mối quan tâm mà bạn cần xem xét khi chọn phần mềm. - Ngay cả NGINX và Apache đều có thể hỗ trợ chạy trên nhiều hệ điều hành hỗ trợ hệ thống Unix. - Tuy nhiên, hiệu năng của NGINX trên Windows vẫn thật sự chưa tốt như trên các nền tảng khác. ![](https://i.imgur.com/C0YMQKx.png) Hỗ trợ người dùng - Apache từ người dùng đầu tiên cho đến các chuyên gia thì luôn có một cộng đồng lớn có thể hỗ trợ khi gặp sự cố. - Trong khi cả NGINX và Apache đều vẫn đang hỗ trợ qua email và Stack Overflow, so với Apache thiếu sự hỗ trợ từ công ty của mình. Hiệu năng - NGINX có thể đồng thời chạy lên đến 1.000 kết nối nội dung tĩnh nhanh hơn gấp 2 lần so với Apache và tiết kiệm bộ nhớ hơn một chút. - Tuy nhiên, khi so sánh song song hiệu suất của chúng khi chạy nội dung động, cả hai đều cho ra cùng tốc độ. - Nhưng về NGINX thật sự là một lựa chọn tốt hơn cho những người có một trang web tĩnh. **Web tĩnh** ![](https://i.imgur.com/B3GDfaB.png) Nginx nhanh hơn 2,5 lần Apache dựa trên một thử nghiệm kiểm chuẩn chạy tới 1000 kết nối đồng thời. **Web động** ![](https://i.imgur.com/Y6QmRTb.png) Trong trường hợp này không có sự vượt trội so với NGINX. ## Kết luận ![](https://i.imgur.com/FGulgXG.png) * 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. * Do đó tùy theo nhu cầu mà bạn có thể lựa chọn máy chủ - phụ thuộc vào nền tảng, cách thức triển khai cũng như hiệu quả nhắm đến. ![](https://i.imgur.com/OPrpCTv.png) ## Nguồn tham khảo * [NGINX là gì? Cơ chế hoạt động & chức năng của NGINX](https://fptcloud.com/nginx/) * [So sánh Nginx và Apache - Lựa chọn máy chủ Web Server phù hợp cho trang web của bạn](https://viblo.asia/p/so-sanh-nginx-va-apache-lua-chon-may-chu-web-server-phu-hop-cho-trang-web-cua-ban-Az45baOwlxY) * [File .htaccess là gì, Hướng dẫn cách dùng file .htaccess toàn tập](https://wiki.matbao.net/kb/cau-hinh-htaccess-can-ban/) * [Apache là gì? Tổng Quan Kiến Thức Về Apache cho người mới](https://zhost.vn/apache-la-gi/) # English ## What is NGINX? ![](https://i.imgur.com/1b5lVTz.png) - NGINX or stylized as NGINX. - An extremely powerful and famous open source web server serving HTTP web. - Use asynchronous, event-driven knowledge for maximum performance and stability. - Serve tasks such as load balancing, HTTP caching, or use as a reverse reverse proxying, media streaming and email proxy such as IMAP, POP3, and SMTP.... ## How NGINX works NGINX is a webserver --> Learn via web-server ![](https://i.imgur.com/k0BamhH.png) A Web server is a mainframe computer connected to an extensive network of computers. - A repository to store all data operating on the internet that it is authorized to manage. - Web server can be hardware or software can also include both --> Then NGINX then ![](https://i.imgur.com/k7HwOJM.png) - Seen as a single thread but doesn't work that way - NGINX follows an asynchronous, event driven architecture. - Similar threads are managed within a process Each process contains smaller units called worker connections This work connection is responsible for handling the threads that provide the work process's requests and sends it to the master process. - Each worker connection can handle up to 1024 similar requests --> NGINX can handle thousands of requests without a hitch ![](https://i.imgur.com/mcGYK0y.png) ## Features of NGINX ![](https://i.imgur.com/bKu4XNg.png) Nginx includes the following series of out-of-the-box features: * Capable of handling more than 10,000 connections at once with low memory * Serving Static Files and indexing files * Use Cache Caching for Reverse Proxy acceleration, simple load balancing and fault tolerance * Acceleration support with caching of WSGI, SCGI, FastCGI and Memcached servers * Has flexible configuration and the ability to save query logs. * Redirect error 3XX – 5XX * Use Regular Expressions to Rewrite URLs * Query response rate restriction * Limit queries from one address or number of concurrent connections * Ability to embed PERL . code * IPv6 compatible and support * WebSockets support * Support MP4 and FLV file transfer * Rewrite URLs,… ![](https://i.imgur.com/9HXPSMZ.png) *Mail proxy features* There are authentication methods as follows * TLS/SSL support * Support STARTTLS * POP3, SMTP, and IMAP proxies ## What is APACHE ? ![](https://i.imgur.com/lUbf177.png) - Apache (HTTP server program) has the full name of Apache HTTP Server. - A free and popular open source server used today. Just like Nginx, Apache is an HTTP server program that is a program for a conversation server over the HTTP protocol. ## How does Apache work? - Although called Apache web server, it is not a physical server, but Apache is a software running on that server. - The main task of Apache is to establish the connection between the server and the browser, The main task of Apache is to establish the connection between the server and the browser and this is a cross-platform source code that can be used for both UNIX and Windows - For example: When the user wants to access the webpage - Apache will load all file information, embedded components on the page for the user. - Followed by securing and maintaining web resources and ensuring security. - Apache is a highly customizable modular platform -> Modules allows server administrators to disable or add functions. ## What features does Apache have? Apache also has features that Nginx has such as: * Static file serving. * SSL/TLS support. * Virtual hosts. * Reverse proxying. * Load balancing. * Compression. * Access controls. * URL rewriting. * Custom logging. * Server-side includes. * Limited WebDAV. * FLV streaming. * FastCGI. Not only that, Apache has more extensive functions than Nginx as follows: * digest access authentication * CGI * administrative console * .htaccess ![](https://i.imgur.com/RuIGx1w.png) ## Compare Apache Server and NGINX server ![](https://i.imgur.com/fkplsDY.png) - Apache is an open source HTTP server program for HTTP conversation servers, while NGINX is a high performance asynchronous web server. - Apache support, debugging, and development is managed and maintained by a large user community around the world. As for NGINX, NGINX support and maintenance is done by a separate host company. - With NGINX can handle multiple connections, but with Apache, a thread is associated with only one connection. - There is still a limitation of NGINX that does not support .htaccess ![](https://i.imgur.com/JR63Otc.png) Operating system support - Compatibility with the operating system is always one of the concerns that you need to consider when choosing software. - Even NGINX and Apache can support running on many operating systems that support Unix systems. - However, the performance of NGINX on Windows is still not as good as on other platforms. ![](https://i.imgur.com/C0YMQKx.png) User Support - Apache, from first users to experts, has a large community that can help when problems arise. - While both NGINX and Apache are still supporting via email and Stack Overflow, compared to Apache lacks support from its company. Performance - NGINX can simultaneously run up to 1,000 static content connections 2x faster than Apache and slightly more memory efficient. - However, when comparing their performance side-by-side when running dynamic content, both output the same speed. - But about NGINX is really a better choice for those who have a static website. **Static Web** ![](https://i.imgur.com/B3GDfaB.png) Nginx is 2.5x faster than Apache based on a benchmark test running up to 1000 concurrent connections. **Dynamic Web** ![](https://i.imgur.com/Y6QmRTb.png) In this case there is no superiority over NGINX. ## Conclusion ![](https://i.imgur.com/FGulgXG.png) * Both Nginx web server and Apache web server are good candidates in different fields. Nginx is the clear winner for static content, while dynamic content makes no real difference between web servers. * Apache excels in terms of flexibility, especially for shared hosting users. Apache .htaccess file and dynamic modules would definitely be more suitable, while Nginx would be better for VPS and dedicated hosting. * Therefore, depending on your needs, you can choose a server - depending on the platform, implementation method as well as targeted efficiency. ![](https://i.imgur.com/OPrpCTv.png) ## Reference source * [What is NGINX? NGINX Operation & Functions](https://fptcloud.com/nginx/) * [Compare Nginx vs Apache - Choosing the right Web Server for your website](https://viblo.asia/p/so-sanh-nginx-va-apache-lua-chon-may-chu-web-server-phu-hop-for-page-website-cabin-Az45baOwlxY) * [What is a .htaccess file, Instructions on how to use the complete .htaccess file](https://wiki.matbao.net/kb/cau-hinh-htaccess-can-ban/) * [What is Apache? Apache Knowledge Overview for Beginners](https://zhost.vn/apache-la-gi/)