ฉันมีแอพ django และฉันต้องการตั้งค่า Varnish บนเซิร์ฟเวอร์ที่อยู่ตรงหน้า ในกระทู้เซิร์ฟเวอร์อื่นผิดใครบางคนแนะนำให้วาง Nginx หน้าวานิช
ฉันควรวาง Nginx ไว้หน้า Varnish บนเซิร์ฟเวอร์แคชหรือไม่ ถ้าเป็นเช่นนั้นฉันควรใช้ Nginx บนเซิร์ฟเวอร์แอปหรือไม่
ฉันมีแอพ django และฉันต้องการตั้งค่า Varnish บนเซิร์ฟเวอร์ที่อยู่ตรงหน้า ในกระทู้เซิร์ฟเวอร์อื่นผิดใครบางคนแนะนำให้วาง Nginx หน้าวานิช
ฉันควรวาง Nginx ไว้หน้า Varnish บนเซิร์ฟเวอร์แคชหรือไม่ ถ้าเป็นเช่นนั้นฉันควรใช้ Nginx บนเซิร์ฟเวอร์แอปหรือไม่
คำตอบ:
เรากำลังพูดถึงเซิร์ฟเวอร์ส่วนหน้าทั้งหมด 1 - 3 เซิร์ฟเวอร์ไม่ใช่เซิร์ฟเวอร์ฟาร์มขนาดใหญ่ที่มีการทำโหลดบาลานซ์ระหว่างเทียร์หรือไม่
การวาง nginx ไว้ด้านหน้า Vanish จะช่วยให้คุณบีบอัด HTTP ได้ทันที นั่นคือแนวทางปฏิบัติที่ดีที่สุดในการปฏิบัติงาน แต่อาจต้องใช้เวลากับ (เนื้อหาในวานิชมักจะไม่ถูกบีบอัดดังนั้น ESI รวมถึงการทำงานดังนั้นคุณจึงไม่ต้องจัดการกับวัตถุเดียวกันหลายเวอร์ชันในแคชซึ่งขึ้นอยู่กับการจับคู่ส่วนหัว / เบราว์เซอร์ต่างกัน)
เกี่ยวกับ nginx บนเซิร์ฟเวอร์แอป - Apache กับ mod_wsgiไม่ใช่วิธีที่แนะนำและใช้กันมากที่สุดในการปรับใช้การติดตั้ง Django ใหม่หรือไม่? ฉันไม่ทราบเหตุผลที่น่าสนใจสำหรับการใช้ nginx / fastcgi เหนือ Apache / mod_wsgi สำหรับ Django แต่คุณควรรับคำแนะนำจากผู้เชี่ยวชาญของ Django
เกี่ยวกับวานิชที่มีคุณสมบัติการปรับสมดุลโหลดที่น่าดึงดูดซึ่งไม่มี nginx ฉันไม่เห็นว่ามันคืออะไร? วานิชมีสมดุลแบบสุ่มและกลม nginx มี round-robin, IP ของลูกค้าและการ hashing ที่สอดคล้องกัน - ฉันไม่เห็นประโยชน์ที่สำคัญสำหรับวานิช? มันเป็น VCL หรือ Varnish 'การกำหนดค่าที่สง่างามโหลดหรืออย่างอื่น?
สำหรับการตั้งค่าเซิร์ฟเวอร์ขนาดเล็ก 1-3 ฉันคิดว่าฉันจะทำ
วานิช -> Apache / mod_wsgi / Django
หรืออาจจะ
Squid -> Apache / mod_wsgi / Django
และละเว้นการบีบอัด HTTP เพื่อความง่ายยกเว้นว่า bandwith มีราคาแพง
ปรับปรุง:
Graham Dumpleton ได้เขียนความคิดเห็นที่มีค่าด้านล่าง เขากล่าวถึงการตั้งค่าทั่วไปเช่นบล็อกใน VPS หรือเว็บฟาร์มขนาดเล็กโดยไม่มีการแคช:
nginx -> Apache / mod_wsgi / Django
นี่เป็นทางออกที่ดีมากด้วยเหตุผลสองประการ:
เหตุผลที่ฉันไม่ได้พูดถึงเรื่องนี้ในตอนแรกก็คือ OP ดูเหมือนจะต้องการ Varnish ซึ่งเป็นโซลูชันแคชที่มีประสิทธิภาพสูงมาก คอมโบ nginx / Apache / mod_wsgi ไม่สามารถแคชด้วยระดับประสิทธิภาพและความยืดหยุ่นที่ตรงกับวานิช
ฉันใช้ Nginx, Varnish และ Apache / mod_wsgi / Django เรียบร้อยแล้ว ฉันเริ่มต้นด้วยการกำหนดค่าต่อไปนี้:
Nginx -> Apache / mod_wsgi / Django
เมื่อฉันเริ่มเห็นการโหลดที่สำคัญใน Apache ฉันเพิ่มวานิช:
Nginx -> Varnish -> Apache / mod_wsgi / Django
ฉันใช้ Nginx เป็น "เราเตอร์ URL" คำร้องขอผู้ดูแลระบบ Django ถูกส่งโดยตรงจาก Nginx ไปยัง Apache คำขอของลูกค้าจะถูกส่งจาก Nginx ไปยัง Varnish ซึ่งแคชคำขอจาก Apache และยังให้บริการรายการ "graced" จากแคชหากเซิร์ฟเวอร์แอปไม่พร้อมใช้งาน
เซิร์ฟเวอร์ Nginx ของฉันยังให้บริการเนื้อหาคงที่โดยตรง (เช่นรูปภาพ, CSS และไฟล์จาวาสคริปต์)
โดยทั่วไปประสิทธิภาพได้ยอดเยี่ยมมาก ฉันสังเกตเห็นสองประการที่ฉันควรพูดถึง:
ฉันใช้ Nginx-> Varnish-> uWSGI-> Django