Nginx? תודה לא... Lighttpd

ב־יום ראשון, 29 בינואר 2012, מאת ארתיום; פורסם תחת: תכנה חופשית, אינטרנט, תכנה ומחשבים; ‏10 תגובות

לאחרונה יש יותר ויותר כתבות על 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‎

תקראו עוד:

תגובות

ik, ב־29/01/12 12:19

לשם שינוי אני מסכים אתך. תמשיך את העבודה הטובה :P

גל, ב־29/01/12 15:32

האם הייתרונות שציינת כלולים בשרת בגירסא היציבה הנוכחית?

עוד משהו שגרם לי לשים יותר עין לאחרונה על nginx ללא קשר לבאז סביבו היא העובדה שנראה שהפיתוח שלו יותר מסיבי, יותר פעיל ואילו הפיתוח של הלייטי נראה יחסית רדום. אני כותב זאת מתוך ההצצה על שני הפרוייקטים בשנה האחרונה. אשמח אם תוכל לתקן אותי \ לפרט יותר לגבי הבשלות עבור שימוש לתוכן דינאמי.

ארתיום, ב־29/01/12 16:49

האם הייתרונות שציינת כלולים בשרת בגירסא היציבה הנוכחית?

בהחלט, למעשה אני תמיד עובד עם הגרסה היציבה.

היא העובדה שנראה שהפיתוח שלו יותר מסיבי,

הפיתוח של Lighttpd הוא אקיטבי ביותר, היו כמה באגים שדיווחתי בזמנו (קוסמטיים ביותר) שכבר מזמן מצאו את עצמם בגרסה היציבה. והגרסה יציבה האחרונה שוחררה לפני כחודש.

אשמח אם תוכל לתקן אותי \ לפרט יותר לגבי הבשלות עבור שימוש לתוכן דינאמי.

ראה לדוגמה:

http://cppcms.com/wikipp/en/page/cppcms_1x_tut_web_server_config

  • ‏Lighttpd תומך ב־3 פרוטוקולים ליישומים דינאמיים (CGI, FastCGI, SCGI) בזמן ש־nginx רק באחד (כמו שצריך).
  • Lighttpd תומך הן ב־FastCGI והן ב־SCGI בניהול התהליכים אוטומטי כמו ש־Apache מה ש־Nginx לא יודע לעשות.
  • גרסת פיתוח של Lighttpd תומכת גם בפרוטוקול של Tomcat.

זה דברים שלפחות אני נתקלתי בהם.

באופן כללי אני שמתי לב שבהרבה מקרים כל מיני מודולים ממומשים מהר בלי להסתכל על תקנים של פרוטוקולים. ראה ערך FastCGI/PATH_INFO, שרק לאחרונה קיבל "סוג של" תמיכה מובנית ובפעם האחרונה שבדקתי הוא לא ביצע url-decoding כפי שנדרש בתקן.

גם בתור Proxy הוא תומך רק ב־HTTP/1.0 בצד ה־Backend

שוב, בכל הנודע לפרוטוקולים ותקנים המימוש הוא לא תמיד מקצועי.

יש ל־nginx כמה כלים חזקים יותר מ־lighttpd כמו url-rewriting אבל לרוב הוא לא מספיק מלוטש בהשוואה ל־Lighttpd.

לכן, אני לא אבחר בו ככלי לנהל תוכן דינאמי.

גל, ב־29/01/12 17:44

הבנתי. תודה על ההסבר המפורט.

shlomil, ב־29/01/12 23:31

במקרה (או שלא) קראתי היום קצת על הנושא. ראיתי גם שיש טענה ללא הרבה סימוכין ברשת על כך ש nginx הוא גם יותר קל במשאבי CPU . מצאתי את העמוד הזה:

http://www.wikivs.com/wiki/Lighttpd_vs_nginx

... לא שזה קשור למציאות, אבל אני חושב שמי שמתלבט בין השניים צריך לעשות בחינה מקיפה ובדיקות עומסים ולבדוק איזה שרת יותר מתאים באופן ייחודי לשימוש שלו (תוכן סטאטי\דינאמי\פיצ'רים שונים).

ארתיום, ב־29/01/12 23:36

בגדול הויקי הזה יש גם דברים נכונים אבל גם הרבה "דברים ידועים" שלאו דווקא נכונים.

בגדול. מהכרות שלי עם nginx הוא ממש גרוע בכל הנושא של טיפול בתקנים. חוץ מזה אני לא מאמין שיש הבדל משמעותי בין שרתים שבנויים על אותם עקרונות.

ik, ב־29/01/12 23:49

nginx בנוי רע מבחינת קינפוג. חסרה לו תמיכה בהמון דברים אשר נדרשים משרת ווב מודרני. זו הסיבה ששמים אותו מקדימה כ LB לרוב.

מהרבה משחקים שהיו לי איתו, אני חייב לציין ש Lighttpd הרבה יותר פשוט ונוח לעבודה. האנרגיה שלוקח לעשות את אותה הפעולה בשני השרתים, Lighttpd לוקח בהליכה בלי להתאמץ. גם התעוד לדעתי טוב יותר.

אני לא חושב שאם עובדים נכון, אז יש רווח כלשהו שיש ל nginx על פני lighttpd וזו הסיבה שאני מסכים עם ארתיום :)

shlomil, ב־29/01/12 23:50

אמונה זה לעצלנים. מה שאני אמרתי זה שמי שרוצה להיות בטוח, שיעשה בנצ'מארקים ויבדוק בעצמו עבור השימוש שלו. הרשת מלא ביותר מדי fud וכבר אי אפשר לדעת בבטחה מה נכון ומה לא.

ארתיום, ב־30/01/12 00:21

האנרגיה שלוקח לעשות את אותה הפעולה בשני השרתים, Lighttpd לוקח בהליכה בלי להתאמץ. גם התעוד לדעתי טוב יותר.

עידו, אנחנו ממש על אותו הגל היום!

+1

נדב קבלרציק, ב־31/01/12 09:25

תודה! מאוד מעניין ושימושי.

הוסף תגובה:

 
 כתובת דוא"ל לא תוצג
 

ניתן לכתוב תגובות עם שימוש בתחביר Markdown.

חובה לאפשר JavaScript כדי להגיב.

דפים

נושאים