ผมเคยอ่านค่อนข้างบิตบนผลประโยชน์ที่สำคัญในการทำงานมากกว่า NGINX Apache สำหรับการให้บริการไฟล์คง อย่างไรก็ตามฉันไม่เคยเห็นบทความพูดคุยเกี่ยวกับ Apache vs NGINX สำหรับการให้บริการหน้า PHP
คำถาม: การแสดงหน้าPHP , Apache หรือ NGINX เร็วกว่าไหน?
ผมเคยอ่านค่อนข้างบิตบนผลประโยชน์ที่สำคัญในการทำงานมากกว่า NGINX Apache สำหรับการให้บริการไฟล์คง อย่างไรก็ตามฉันไม่เคยเห็นบทความพูดคุยเกี่ยวกับ Apache vs NGINX สำหรับการให้บริการหน้า PHP
คำถาม: การแสดงหน้าPHP , Apache หรือ NGINX เร็วกว่าไหน?
คำตอบ:
โดยส่วนตัวแล้วฉันคิดว่า nginx ให้การแบ่งที่ถูกต้องระหว่างสิ่งที่มันทำเอง (การรับและการประมวลผลคำขอ HTTP) และสิ่งที่มันมอบหมายให้กระบวนการอื่น (การสร้างหน้าแบบไดนามิก) ในขณะที่ความพยายามน้อยกว่าในการติดตั้ง Apache เพื่อตอบสนองคำขอ PHP การรันทุกอย่างภายใน Apache เป็นบิตของปัญหาด้านความปลอดภัยและการกำหนดค่า (ไฟล์ทั้งหมดที่เข้าถึงได้โดยสคริปต์ทั้งหมดที่ผู้ใช้ทุกคนบนเซิร์ฟเวอร์ต้องอ่าน / เขียนได้โดยผู้ใช้ Apache ทำหน้าที่เป็นหมายความว่าสคริปต์ PHP ของผู้ใช้คนหนึ่งสามารถดูข้อมูลของผู้ใช้คนอื่นได้); การใช้งานเว็บไซต์ PHP แต่ละแห่งเนื่องจากผู้ใช้เป็นเจ้าของในบริบทของ FastCGI นั้นเป็นตัวเลือกที่ดีกว่ามาก (เสียค่าใช้จ่ายในการกำหนดค่าล่วงหน้ามากขึ้นเล็กน้อยจนกว่าคุณจะมีการสร้างเว็บไซต์อัตโนมัติในสิ่งที่ถูกต้อง)
ตราบใดที่ "เร็วกว่า" ไป Apache กับ mod_php อาจจะเร็วขึ้นในคำขอเดียวตราบใดที่เครื่องไม่ได้ถูก จำกัด ทรัพยากร อย่างไรก็ตาม Apache มีความอ้วนมาก ( โดยเฉพาะเมื่อทำงานกับ mod_php) ดังนั้นคุณจะสามารถรับส่งข้อมูลด้วย nginx ได้มากขึ้นก่อนที่จะต้องอัพเกรดเป็นกล่องที่ใหญ่กว่า
ผู้เขียนของ nginx กล่าวว่า nginx มีวัตถุประสงค์เพื่อให้บริการไฟล์คงที่และเป็นส่วนหน้าคำขอการส่งต่อซึ่งต้องใช้หน้าแบบไดนามิกไปยังเซิร์ฟเวอร์อื่น ๆ เช่น apache
อีกความคิดที่ดีคือการแคชคำขอไดนามิกของ apache ด้วย nginx หากข้อมูลไม่ค่อยได้รับการอัปเดตตัวอย่างเช่นโพสต์บล็อกที่เก็บถาวร
ในกรณีส่วนใหญ่ nginx สำหรับโครงการที่มีโหลดสูง nginx + php + php-fpm เป็นตัวเลือกที่ยอดเยี่ยม