Apache vs Nginx: Practical Considerations
Jan 28, 2015 Apache, Nginx
Introduction
Apache and Nginx are the two most common open source web servers in the world. Together, they are responsible for serving over 50% of traffic on the internet. Both solutions are capable of handling diverse workloads and working with other software to provide a complete web stack.
While Apache and Nginx share many qualities, they should not be thought of as entirely interchangeable. Each excels in its own way and it is important to understand the situations where you may need to reevaluate your web server of choice. This article will be devoted to a discussion of how each server stacks up in various areas.
General Overview
Before we dive into the differences between Apache and Nginx, let's take a quick look at the background of these two projects and their general characteristics.
Apache
The Apache HTTP Server was created by Robert McCool in 1995 and has been developed under the direction of the Apache Software Foundation since 1999. Since the HTTP web server is the foundation's original project and is by far their most popular piece of software, it is often referred to simply as "Apache".
The Apache web server has been the most popular server on the internet since 1996. Because of this popularity, Apache benefits from great documentation and integrated support from other software projects.
Apache is often chosen by administrators for its flexibility, power, and widespread support. It is extensible through a dynamically loadable module system and can process a large number of interpreted languages without connecting out to separate software.
Nginx
In 2002, Igor Sysoev began work on Nginx as an answer to the C10K problem, which was a challenge for web servers to begin handling ten thousand concurrent connections as a requirement for the modern web. The initial public release was made in 2004, meeting this goal by relying on an asynchronous, events-driven architecture.
Nginx has grown in popularity since its release due to its light-weight resource utilization and its ability to scale easily on minimal hardware. Nginx excels at serving static content quickly and is designed to pass dynamic requests off to other software that is better suited for those purposes.
Nginx is often selected by administrators for its resource efficiency and responsiveness under load. Advocates welcome Nginx's focus on core web server and proxy features.
Connection Handling Architecture
One big difference between Apache and Nginx is the actual way that they handle connections and traffic. This provides perhaps the most significant difference in the way that they respond to different traffic conditions.
Apache
Apache provides a variety of multi-processing modules (Apache calls these MPMs) that dictate how client requests are handled. Basically, this allows administrators to swap out its connection handling architecture easily. These are:
mpm_prefork: This processing module spawns processes with a single thread each to handle request. Each child can handle a single connection at a time. As long as the number of requests is fewer than the number of processes, this MPM is very fast. However, performance degrades quickly after the requests surpass the number of processes, so this is not a good choice in many scenarios. Each process has a significant impact on RAM consumption, so this MPM is difficult to scale effectively. This may still be a good choice though if used in conjunction with other components that are not built with threads in mind. For instance, PHP is not thread-safe, so this MPM is recommended as the only safe way of working with mod_php, the Apache module for processing these files.
mpm_worker: This module spawns processes that can each manage multiple threads. Each of these threads can handle a single connection. Threads are much more efficient than processes, which means that this MPM scales better than the prefork MPM. Since there are more threads than processes, this also means that new connections can immediately take a free thread instead of having to wait for a free process.
mpm_event: This module is similar to the worker module in most situations, but is optimized to handle keep-alive connections. When using the worker MPM, a connection will hold a thread regardless of whether a request is actively being made for as long as the connection is kept alive. The event MPM handles keep alive connections by setting aside dedicated threads for handling keep alive connections and passing active requests off to other threads. This keeps the module from getting bogged down by keep-alive requests, allowing for faster execution. This was marked stable with the release of Apache 2.4.
As you can see, Apache provides a flexible architecture for choosing different connection and request handling algorithms. The choices provided are mainly a function of the server's evolution and the increasing need for concurrency as the internet landsc
Apache VS Nginx : พิจารณาการปฏิบัติ28 ม.ค. 2558 Apache , NginxแนะนำApache และ Nginx เป็นสองส่วนใหญ่ที่มาเปิดเซิร์ฟเวอร์เว็บในโลก ด้วยกัน พวกเขามีความรับผิดชอบในการให้บริการมากกว่า 50% ของการจราจรบนอินเทอร์เน็ต โซลูชั่นทั้งสองมีความสามารถในการจัดการงานและการทำงานกับซอฟต์แวร์อื่น ๆที่หลากหลาย เพื่อให้เว็บกองสมบูรณ์ขณะที่ Apache และ Nginx แบ่งปันคุณภาพมากมาย พวกเขาไม่ควรคิดว่าเป็นทั้งหมดที่ใช้แทนกันได้ แต่ละ excels ในทางของตัวเองและมันเป็นสิ่งสำคัญที่จะเข้าใจสถานการณ์ที่คุณอาจต้องการที่จะประเมินของคุณ เว็บ เซิร์ฟเวอร์ ของทางเลือก บทความนี้จะทุ่มเทให้กับการอภิปรายของแต่ละเซิร์ฟเวอร์ วิธีการกองขึ้นในพื้นที่ต่างๆภาพรวมทั่วไปก่อนที่เราจะดำน้ำในความแตกต่างระหว่าง Apache และ Nginx ลองมาดูอย่างรวดเร็ว พื้นหลังของทั้งสองโครงการ และลักษณะทั่วไปของพวกเขาอะแพชีApache HTTP Server ที่ถูกสร้างขึ้นโดยโรเบิร์ต แม็คคูลในปี 1995 และได้รับการพัฒนาภายใต้ทิศทางของ Apache Software Foundation ตั้งแต่ปี 1999 ตั้งแต่ HTTP เว็บเซิร์ฟเวอร์คือมูลนิธิโครงการเดิมและคือโดยไกลที่ได้รับความนิยมมากที่สุดของชิ้นส่วนของซอฟต์แวร์ มันมักจะเรียกว่าเป็นเพียง " อาปาเช่ "Apache เว็บเซิร์ฟเวอร์ได้รับเซิร์ฟเวอร์ที่ได้รับความนิยมมากที่สุดบนอินเทอร์เน็ตตั้งแต่ปี 1996 เพราะความนิยมนี้ ใช้ประโยชน์จากเอกสารที่ดีและบูรณาการการสนับสนุนจากโครงการซอฟต์แวร์อื่น ๆApache มักจะเลือกโดยผู้บริหารของความยืดหยุ่น , พลังงาน , และการสนับสนุนอย่างกว้างขวาง มันได้ผ่านระบบโมดูลแบบไดนามิก loadable และสามารถประมวลผลตัวเลขขนาดใหญ่ของแปลภาษาโดยเชื่อมต่อออกแยกซอฟต์แวร์Nginxในปี 2002 , อิกอร์ sysoev เริ่มทำงานบน Nginx เป็นคำตอบสำหรับปัญหา c10k ซึ่งเป็นความท้าทายสำหรับเว็บเซิร์ฟเวอร์เพื่อเริ่มต้นการจัดการหมื่นพร้อมกันการเชื่อมต่อเป็นสิ่งจำเป็นสำหรับเว็บที่ทันสมัย ปล่อยสาธารณะครั้งแรกถูกสร้างในปี 2004 การประชุมเป้าหมายนี้โดยอาศัยแบบอะซิงโครนัส เหตุการณ์ขับเคลื่อนสถาปัตยกรรมNginx มีโตในความนิยมตั้งแต่รุ่น เนื่องจากมีน้ำหนักเบา การใช้ทรัพยากรและความสามารถในการปรับได้อย่างง่ายดายบนฮาร์ดแวร์ที่น้อยที่สุด Nginx excels ที่ให้บริการเนื้อหาแบบคงที่ได้อย่างรวดเร็วและถูกออกแบบมาเพื่อส่งผ่านการร้องขอแบบไดนามิกจากซอฟต์แวร์อื่น ๆที่เหมาะกับวัตถุประสงค์เหล่านั้นNginx มักจะเลือกโดยผู้บริหารของ ประสิทธิภาพการใช้ทรัพยากรและการตอบสนองภายใต้โหลด สนับสนุนยินดีต้อนรับ Nginx เป็นมุ่งเน้นคุณลักษณะเซิร์ฟเวอร์เว็บและตัวแทนหลักการเชื่อมต่อการจัดการสถาปัตยกรรมความแตกต่างเดียวระหว่าง Apache และ Nginx เป็นจริงวิธีที่พวกเขาจัดการกับการเชื่อมต่อและการจราจร บางทีความแตกต่างนี้มีมากในวิธีที่พวกเขาตอบสนองต่อสภาพการจราจรที่แตกต่างกันอะแพชีApache มีความหลากหลายของการประมวลผลหลายโมดูล ( Apache โทร mpms เหล่านี้ ) ที่บอกวิธีการจัดการการร้องขอของลูกค้า . โดยทั่วไป นี้จะช่วยให้ผู้ดูแลระบบเพื่อสลับออกของการจัดการสถาปัตยกรรมการเชื่อมต่อได้อย่างง่ายดาย เหล่านี้คือ :mpm_prefork : การประมวลผลโมดูลเกิดกระบวนการที่มีหัวข้อเดียวกันเพื่อจัดการกับการร้องขอ เด็กแต่ละคนจะสามารถจัดการการเชื่อมต่อเดียวในเวลา ตราบใดที่จำนวนหน้าน้อยกว่าจำนวนของกระบวนการ MPM นี้เป็นไปอย่างรวดเร็วมาก อย่างไรก็ตาม การปฏิบัตินี้อย่างรวดเร็วหลังจากรับประทานอาหารเกินจำนวนของกระบวนการดังนั้นนี้ไม่ได้เป็นทางเลือกที่ดีในสถานการณ์มาก แต่ละกระบวนการมีผลกระทบต่อการบริโภคแรมแล้ว ต่อนี้เป็นเรื่องยากที่จะวัดได้อย่างมีประสิทธิภาพ นี้ยังเป็นทางเลือกที่ดี แต่ถ้าใช้ร่วมกับส่วนประกอบอื่น ๆที่ไม่ได้สร้างกระทู้ไว้ ตัวอย่างเช่น PHP ไม่ด้ายปลอดภัย ต่อนี้ควรเป็นเพียงวิธีที่ปลอดภัยของการทำงานกับ mod_php , โมดูล Apache สำหรับการประมวลผลไฟล์เหล่านี้mpm_worker : โมดูลนี้จะเกิดกระบวนการที่แต่ละคนจะสามารถจัดการได้หลายหัวข้อ แต่ละหัวข้อเหล่านี้สามารถจัดการการเชื่อมต่อเดียว กระทู้ที่มีประสิทธิภาพมากขึ้นกว่ากระบวนการซึ่งหมายความ ว่า ต่อเครื่องดีกว่า prefork ต่อ . เนื่องจากมีกระทู้มากกว่ากระบวนการ นอกจากนี้ยังหมายความว่าการเชื่อมต่อใหม่ได้ทันทีสามารถใช้ด้ายฟรี แทนที่จะต้องรอกระบวนการฟรีmpm_event : โมดูลนี้จะคล้ายกับคนงานโมดูลในสถานการณ์ส่วนใหญ่ แต่เหมาะที่จะจัดการให้การเชื่อมต่อชีวิต เมื่อใช้งานต่อ , การเชื่อมต่อจะจับด้ายไม่ว่าขอนำเสนอการทำตราบใดที่การเชื่อมต่อจะถูกเก็บไว้ยังมีชีวิตอยู่ เหตุการณ์ต่อจัดการให้การเชื่อมต่อชีวิต โดยตั้งหัวข้อเฉพาะการจัดการให้การเชื่อมต่อชีวิตและผ่านการร้องขอปราดเปรียวไปหัวข้ออื่น ๆ ช่วยให้โมดูลจากการจมลงโดยให้ขอมีชีวิตอยู่เพื่อให้สามารถปฏิบัติการได้เร็วขึ้น นี้ถูกทำเครื่องหมายที่มั่นคงกับรุ่นของ Apache 2.4 .ที่คุณสามารถดู , Apache มีสถาปัตยกรรมที่มีความยืดหยุ่นสำหรับการเลือกการเชื่อมต่อที่แตกต่างกัน และขอจัดการอัลกอริธึม ตัวเลือกที่ให้ส่วนใหญ่จะเป็นฟังก์ชันของเซิร์ฟเวอร์และเพิ่มความต้องการการเป็นอินเทอร์เน็ต landsc
การแปล กรุณารอสักครู่..