ข้อเสียของการใช้ nginx เป็นเว็บเซิร์ฟเวอร์หลักหรือไม่


12

ฉันเคยเห็นเว็บไซต์หลายล้านแห่งที่ใช้ nginx เป็นเว็บเซิร์ฟเวอร์ที่ทำงานร่วมกันกับ Apache แต่ฉันเห็นเซิร์ฟเวอร์น้อยมากที่ใช้ nginx เป็นเว็บเซิร์ฟเวอร์เริ่มต้นเท่านั้น อะไรคือข้อเสียหลักของการกำหนดค่าดังกล่าว?

ฉันเห็นบางอย่าง:

  • ไม่สามารถใช้ไฟล์กำหนดค่าต่อไดเรกทอรีเช่น. htaccess ดังนั้นทุกการเปลี่ยนแปลงการกำหนดค่าควรทำกับไฟล์กำหนดค่าเซิร์ฟเวอร์หลักและต้องการโหลดเซิร์ฟเวอร์ใหม่ แต่ pecl htscanner สามารถชดเชยการตั้งค่า php ได้
  • ไม่สามารถใช้งาน mod_php สำหรับ nginx ซึ่งสามารถชดเชยได้ด้วย php-fpm

คนอื่นคืออะไร ทำไมคนไม่ปล่อย Apache และย้ายไปที่ nginx หรือโซลูชันที่มีน้ำหนักเบาอื่น ๆ อาจจะมีเหตุผลพิเศษบางอย่าง?

แก้ไข: คำถามนี้เกี่ยวกับการทำงานกับ LAMP stack เป็นหลัก


1
Mindshare ความเฉื่อยการลงทุน เช่นเคย
Ignacio Vazquez-Abrams

การลงทุนใดที่จำเป็นในการติดตั้ง nginx บนเซิร์ฟเวอร์ใหม่ เป็นซอฟต์แวร์โอเพ่นซอร์สฟรี
Vladislav Rastrusny

3
การลงทุนเวลาที่ใช้ในการวิจัยปรับใช้ทดสอบและอื่น ๆ
ThatGraemeGuy

หากเรากำลังพูดถึงปริมาณ IMHO สาเหตุที่ใหญ่ที่สุดคือโฮสต์ที่ใช้ร่วมกันจำนวนมากโดยใช้ Apache การตั้งค่า nginx เป็นบริการที่ใช้ร่วมกัน (เช่นใน cPanel, Plesk ฯลฯ ) ยังไม่ง่ายเหมือนการทำเช่นเดียวกันกับ Apache โดยเฉพาะอย่างยิ่งสำหรับผู้ใช้ปลายทาง และฉันรู้ว่าเซิร์ฟเวอร์เฉพาะจำนวนมากที่ใช้เว็บไซต์เดียวและยังใช้ cPanel / Plesk / etc เพียงเพราะความง่ายความคุ้นเคยและค่าติดตั้งที่ต่ำ
Halil Özgür

คำตอบ:


9

จากประสบการณ์ #nginx ของฉันมันเกือบจะเป็นเพราะความคุ้นเคยกับไฟล์ Apache. htaccess และไม่ต้องการสูญเสียสิ่งนั้นหรืออย่างอื่นขึ้นอยู่กับมัน ตัวอย่างเช่นผู้ที่ใช้เซิร์ฟเวอร์โฮสติ้งที่ใช้ร่วมกันซึ่งต้องการถ่ายไฟล์คงที่เท่านั้นและให้ apache สำหรับผู้ใช้ของพวกเขา

และฉันก็ไม่สามารถคิดเหตุผลอื่น ๆ สำหรับการพร็อกซีกับ Apache ได้อย่างแท้จริงนอกเหนือไปจากการรักษา. htaccess ให้กับผู้ใช้ปลายทาง

แก้ไข: จริง ๆ แล้ว mod_php บวก phpsuexec สำหรับโฮสต์ที่ใช้ร่วมกันอาจเป็นอีกสาเหตุหนึ่งของการผสานกับ Apache


จากประสบการณ์ของฉันมันค่อนข้างยากที่จะได้รับประสิทธิภาพที่ดีจาก Tomcat ผ่าน nginx เนื่องจาก ajp-ajp-apache2 ของ apache2 นั้นทำงานได้เร็วกว่าภายใต้แรงดันสูง ฉันรู้ว่า nginx มีการทดลองใช้ ajp13 แต่มันไม่เสถียรและบันทึกไว้ไม่ดี
pauska

1
เป็นไปได้มาก Nginx ทำงานได้ดีที่สุดในฐานะ fastcgi หรือ HTTP 1.0 reverse proxy ฉันรู้ว่ามีโมดูลของบุคคลที่สามสำหรับการพูดคุยกับ scgi, wsgi เป็นต้น แต่ฉันไม่สามารถพูดได้ว่าพวกเขามีความเสถียรหรือเร็วแค่ไหน
Martin Fjordvald

BTW, mod_php ไม่ทำงานกับ suexec Suexec สำหรับการใช้งาน cgi
Vladislav Rastrusny

คุณไปแล้วไม่มีเหตุผลจริง เป็นผู้ใช้ nginx นานเกินไปที่จะจำ Apache ได้อีกต่อไป : D
Martin Fjordvald

6

หากคุณมีคนจำนวนมากที่สามารถทำให้ Apache ทำงานได้ดีทำไมต้องลองแอปและการกำหนดค่าใหม่ทั้งหมดให้ย้ายกฎ mod_rewrite, ทำซ้ำการกำหนดค่า mod_perl / php / etc ทำซ้ำทดสอบอีกครั้งปรับใช้ใหม่หรือไม่

ทั้งชุดซอฟต์แวร์อาจฟรี แต่ "ฝึกอบรมใหม่พัฒนาใหม่ทดสอบอีกครั้ง" ไม่ใช่และถึงเวลาที่คุณสามารถเพิ่มฟีเจอร์ที่ผู้ใช้ของคุณให้ความสำคัญกับ1แทนที่จะทำการแก้ไขเพื่อแก้ไขปัญหา

1เห็นได้ชัดว่าฉันไม่ได้พูดเกี่ยวกับโครงการส่วนบุคคลที่นั่น


2

ฉันชอบ Nginx แต่มีสองสิ่งที่ห้ามไม่ให้ฉันใช้กับเว็บไซต์ของฉัน

  • ตั้งค่าPHP-FPMได้ยาก ฉันยังไม่ประสบความสำเร็จในการทำเวอร์ชัน PHP ล่าสุด

  • Nginx ไม่รองรับ HTML5 Websockets ซึ่งฉันกำลังเข้าไปเกี่ยวข้อง


1
คุณสามารถบอกชื่อปัญหาที่คุณประสบกับ nginx และ php-fpm ได้หรือไม่? เกี่ยวกับ HTML5 WebSockets ดูเหมือนว่า Apache ยังไม่มีพวกเขา: problems.apache.org/bugzilla/show_bug.cgi?id=47485
Vladislav Rastrusny

ฉันต้องการทราบปัญหาของ php-fpm เช่นกัน ถ้าคุณสามารถคอมไพล์ PHP จากซอร์สโดยที่ไม่มีมันก็ง่ายมากที่จะทำกับมันเช่นกัน
Martin Fjordvald

1
5.3 สาขามีภายในแล้วดังนั้น. / config - เปิดใช้งาน -fpm และคุณทำเสร็จแล้ว
Vladislav Rastrusny
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.