הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
Nginx? תודה לא... Lighttpd
לאחרונה יש יותר ויותר כתבות על Nginx ועד כמה השרת הזה מעולה. נתח השוק של Nginx לפי הסקירות האחרונות של Netcraft עומד על כ־10%. אז כנראה יש סיבה לכך!
עכשיו, דברים שלא מספרים:
- רוב שרתי ה־Nginx המופיעים ב־Netcraft עובדים כ־Reverse Proxy או מטפלים בעיקר בקבצים הסטטיים. בהרבה מאוד המקרים Nginx הוא מתפקד כ־Load Balancing Frontend לפי שרתי Apache.
- התמיכה של Nginx בתוכן דינאמי היא בין מועטה עד לוקה בחסר:
- אין תמיכה ב־CGI כלל.
- אין תמיכה בניהול של שרתי FastCGI, כך שהשירות התוכן הדינאמי שלך חייב לרוץ התהליך נפרד ואתה צריך לדאוג לו (למשל להעלות אם הוא נפל מסיבר כלשהי)
- הגדרות FastCGI לא תואמות תקן -
PATH_INFO
לא מוגדר כברירת מחדל. צריך לעבוד קשה כדי שהוא יעבוד נכון. מה שגורם לא מעט בעיות לאלה שמגלים שהיישום שלהם שבור בצורה לא ברור ולא מבינים למה. - תמיכה ב־SCGI שבורה לחלוטין. הוא לא מטפל ב־Status כמו שצריך, שזה אומר שרוב ההפניות תהינה שבורות אלא אם היישום שלך ישלח את התשובה כ־HTTP נקי.
להמשיך?
כן, אם אתם צריכים Reverse Proxy או לטפל בתוכן סטטי זהו שרת מעולה. אחרת, תחשבו פעמיים.
אני ממליץ בחום על Lighttpd: מהיר כמו Nginx ובנוי על אותם העקרונות, מתועד היטב, מטפל תוכן סטטי ודינאמי בצורה יוצאת מן הכלל. קל לקינפוג ועוד.
לפני שאנשים יקפצו ויגידו:
Lighttpd זולג!
אז התשובה היא, לא הוא, לא זולג.
ציטוט:
there are no memory leaks just stupid ways to use lighttpd.
e.g. it is really stupid to stream large files via a fastcgi app, when x-lighttpd-send-file could do a much more efficient job
תקראו עוד:
תגובות
לשם שינוי אני מסכים אתך. תמשיך את העבודה הטובה :P
האם הייתרונות שציינת כלולים בשרת בגירסא היציבה הנוכחית?
עוד משהו שגרם לי לשים יותר עין לאחרונה על nginx ללא קשר לבאז סביבו היא העובדה שנראה שהפיתוח שלו יותר מסיבי, יותר פעיל ואילו הפיתוח של הלייטי נראה יחסית רדום. אני כותב זאת מתוך ההצצה על שני הפרוייקטים בשנה האחרונה. אשמח אם תוכל לתקן אותי \ לפרט יותר לגבי הבשלות עבור שימוש לתוכן דינאמי.
בהחלט, למעשה אני תמיד עובד עם הגרסה היציבה.
הפיתוח של Lighttpd הוא אקיטבי ביותר, היו כמה באגים שדיווחתי בזמנו (קוסמטיים ביותר) שכבר מזמן מצאו את עצמם בגרסה היציבה. והגרסה יציבה האחרונה שוחררה לפני כחודש.
ראה לדוגמה:
http://cppcms.com/wikipp/en/page/cppcms_1x_tut_web_server_config
זה דברים שלפחות אני נתקלתי בהם.
באופן כללי אני שמתי לב שבהרבה מקרים כל מיני מודולים ממומשים מהר בלי להסתכל על תקנים של פרוטוקולים. ראה ערך FastCGI/PATH_INFO, שרק לאחרונה קיבל "סוג של" תמיכה מובנית ובפעם האחרונה שבדקתי הוא לא ביצע url-decoding כפי שנדרש בתקן.
גם בתור Proxy הוא תומך רק ב־HTTP/1.0 בצד ה־Backend
שוב, בכל הנודע לפרוטוקולים ותקנים המימוש הוא לא תמיד מקצועי.
יש ל־nginx כמה כלים חזקים יותר מ־lighttpd כמו url-rewriting אבל לרוב הוא לא מספיק מלוטש בהשוואה ל־Lighttpd.
לכן, אני לא אבחר בו ככלי לנהל תוכן דינאמי.
הבנתי. תודה על ההסבר המפורט.
במקרה (או שלא) קראתי היום קצת על הנושא. ראיתי גם שיש טענה ללא הרבה סימוכין ברשת על כך ש nginx הוא גם יותר קל במשאבי CPU . מצאתי את העמוד הזה:
http://www.wikivs.com/wiki/Lighttpd_vs_nginx
... לא שזה קשור למציאות, אבל אני חושב שמי שמתלבט בין השניים צריך לעשות בחינה מקיפה ובדיקות עומסים ולבדוק איזה שרת יותר מתאים באופן ייחודי לשימוש שלו (תוכן סטאטי\דינאמי\פיצ'רים שונים).
בגדול הויקי הזה יש גם דברים נכונים אבל גם הרבה "דברים ידועים" שלאו דווקא נכונים.
בגדול. מהכרות שלי עם nginx הוא ממש גרוע בכל הנושא של טיפול בתקנים. חוץ מזה אני לא מאמין שיש הבדל משמעותי בין שרתים שבנויים על אותם עקרונות.
nginx בנוי רע מבחינת קינפוג. חסרה לו תמיכה בהמון דברים אשר נדרשים משרת ווב מודרני. זו הסיבה ששמים אותו מקדימה כ LB לרוב.
מהרבה משחקים שהיו לי איתו, אני חייב לציין ש Lighttpd הרבה יותר פשוט ונוח לעבודה. האנרגיה שלוקח לעשות את אותה הפעולה בשני השרתים, Lighttpd לוקח בהליכה בלי להתאמץ. גם התעוד לדעתי טוב יותר.
אני לא חושב שאם עובדים נכון, אז יש רווח כלשהו שיש ל nginx על פני lighttpd וזו הסיבה שאני מסכים עם ארתיום :)
אמונה זה לעצלנים. מה שאני אמרתי זה שמי שרוצה להיות בטוח, שיעשה בנצ'מארקים ויבדוק בעצמו עבור השימוש שלו. הרשת מלא ביותר מדי fud וכבר אי אפשר לדעת בבטחה מה נכון ומה לא.
עידו, אנחנו ממש על אותו הגל היום!
+1
תודה! מאוד מעניין ושימושי.
הוסף תגובה:
חובה לאפשר JavaScript כדי להגיב.