وب سرورIISآپاچیانجنیکسلایت اسپید

معرفی، مقایسه و آشنایی با برترین وب سرورها

مقدمه

دانش در مورد وب سرور ها نیازی حیاتی برای یک مدیر سرور محسوب می شود، تا از بهترین گزینه جهت سرویس دهی و یا جایگزینی وب سرور در سرور عملیاتی استفاده نمایید. در این مقاله سعی بر این بوده که مفاهیم تمامی وب سرور های معروف به همراه نمودار های بازدهی و … مورد برسی قرار گیرد. قطعا این مقاله برای شما پرکاربرد خواهد بود و مطالعه آن توصیه می شود. با مطالعه این مقاله یا مقالات مشابه درک شما از عملکرد وب سرور افزایش خواهد یافت. توجه داشته باشید این مقاله به آموزش، نصب و کانفیگ نپرداخته و فقط عملکرد و قابلیت های وب سرور ها مورد برسی قرار خواهد گرفت.

وب سرور چیست ؟

وب سرور برنامه ای است که از HTTP یا همان پروتکل انتقال ابرمتن (Hypertext Transfer Protocol) جهت ارائه صفحات وب به کاربر استفاده می کند. اطلاعات ارائه شده توسط کلاینت در سیستم کاربر که به زبان ساده همان مرورگرها هستند ترجمه شده و برای کاربر نمایش داده می شود. ممکن است به Server ها و نرم افزار های سرویس دهنده نیز وب سرور گفته شود که در این مقاله منظور از وب سرور سرویس دهنده HTTP می باشد.

تمامی میزبانان وبسایت ها باید از وب سرور جهت ارائه سرویس استفاده کنند، از این رو باید یکی از وب سرور های Apache (یکی از پر استفاده ترین وب سرور ها) IIS (Microsoft’s Internet Information Server), Nginx, GWS, lighttpd, LiteSpeed و… را جهت ارائه سرویس انتخاب نمایند. معمولا وب سرور ها در کنار پکیجی از پروتکل ها و سرویس ها مانند سرویس های SMTP,FTP و… اقدام به سرویس دهی می کنند.قبل از انتخاب نوع وب سرور باید نوع سرویسی که قرار است روی سرور ارائه شود بطور کامل مشخص شود تا با توجه به نیاز خود وب سرور را انتخاب نمایید. توجه داشته باشید انتخاب اشتباه ممکن است در سرور های Critical Mission موجب قطع سرویس دهی گردد، هرچند در سرور های Low priority تغییر نوع وب سرور مشکل خاصی ایجاد نخواهد کرد. علاوه بر موارد ذکر شده انتخاب وب سرور گاها به پلتفرم سیستم عامل، امنیت و زبان برنامه نویسی استفاده شده نیز مرتبط می باشد.

معرفی وب سرور ها

Apache

آپاچی یکی از پر استفاده ترین وب سرور های دنیا می باشد. آپاچی در سال ۱۹۹۵ منتشر شد و پایداری و قدرت آن باعث شد تا نقشی کلیدی در دنیای WWW ایفا کند.(World Wide Web) پس از انتشار، محبوبیت آپاچی روز به روز افزایش یافت بصورتی که در سال ۲۰۰۹ حدود ۱۰۰ میلیون وبسایت توسط آپاچی سرو می شد. در گذشته نیز همانند حال apache بر روی سیستم عامل های خانواده unix (بیشتر لینوکس) برای سرویس دهی نصب می شد، هرچند این وب سرور می تواند روی سرور های ویندوزی نیز سرویس دهی نمایید. در ویندوز اغلب developer ها و برنامه نویس ها جهت اجرا و کامپایل کد خود از آپاچی استفاده می کنند. با افتخار آپاچی یک وب سرور متن باز می باشد که همین امر باعث توسعه روز افزون آن شده است. نام apache برگرفته از نام یکی از قبیله های بومی آمریکاست که در استراتژی و جنگ مهارت بالایی داشتند.

آپاچی دارای امکانات زیادی می باشد که بسیاری از Hنها با کامپایل شدن به این وب سرور اضافه خواهد شد که قابلیت های core این وب سرور را بشدت افزایش می دهد. دامنه این گسترش می تواند از تعدد زبان های برنامه نویسی تا ماژول های احراز هویت و … باشد. از زبان های برنامه نویسی پر استفاده میتوان به Perl، Python، TCL و PHP اشاره کرد. ماژول های احرازهویت نیز شامل mod_access، mod_auth، mod_digest و mod_auth_digest می باشد. از دیگر نمونه ماژول های این وب سرور میتوان به Secure Socket Layer و Transport Layer Security یعنی mod_ssl، ماژول پروکسی mod_proxy، ماژول بازنویسی آدرس ها mod_rewrite اشاره کرد. ماژول های زیادی برای این وب سرور منتشر شده است که امکانت کنترل و اعمال محدودیت های بسیاری را به شما می دهد. ماژول های ذکر شده جزو ماژول های داخلی apache هستند که معمولا به همراه ان نصب و کامپایل خواهند شد.

امکانات HTTP proxy و Web server :

  • لود و استفاده از ماژول ها بصورت پویا
  • ماژول پردازش چندگانه درخواست ها [MPM]
  • بسیار مقیاس پذیر(براحتی ۱۰۰۰۰ اتصال را بصورت همزمان هندل می کند)
  • هندل کردن فایل های static و فایل های index
  • پشتیبانی از htaccess
  • پروکسی معکوس به همراه کش
  • مکانیزم Load Balancing بصورت همزمان
  • قابلیت Fault Tolerance و Failover به همراه بازیابی خودکار
  • WebSocket, FastCGI, SCGI, AJP و uWSGI به همراه پشتیبانی از کش
  • تنظیمات پویا
  • قابلیت TLS/SSL با SNI  و پشتیبانی از OCSP stapling با استفاده از OpenSSL
  • پشتیبانی از IPV6
  • پشتیبانی از پروتکل HTTP/2
  • پشتیبانی از gzip
  • پشتیبانی از URL Rewriting
  • پشتیبانی از بازنویسی هدر ها و محتوا
  • اعمال محدودیت در کانکشن های فعال
  • محدودیت در تعداد درخواست های پردازش
  • اعمال محدودیت در پهنای باند
  • ردگیری Session و کاربر
  • WebDAV
  • پشتیبانی از perl و PHP به همراه اسکریپت های Lua
  • پشتیبانی از CGI
  • پوشه public_html برای هر کاربر
  • پشتیبان از XML

معرفی برخی از ماژول های توسعه یافته معروف به اختصار :

  • mod_rewrite : جهت تغییر در URL و دریافت کد response مربوط به HTTP استفاده می شود.
  • mod_deflate : محتوا و فایل ها را قبل از ارسال به مرورگر توسط gzip فشرده می کند و فایل های فشرده شده بصورت اتوماتیک توسط مرورگر از حالت فشرده خارج می شود.
  • mod_security : این ماژول به شما این قابلیت را می دهد که محتوا را از بر اساس post data ، ادرس URL و یا هرچیزی که در request ارسالی وجود دارد بلاک نمایید.
  • mod_speling : با این ماژول می توانید حروف درون URL ها را برسی نمایید.(بر خلاف ویندوز لینوکس روی بزرگی و کوچکی حروف در URL حساس می باشد)
  • mod_cache : برای کش کردن فایل ها روی مموری و یا هارد دیسک استفاده می شود.
  • mod_setenvif : جهت بکارگرفتن متغیر برای شرایط و محیط های مختلف می باشد بطور مثل اگر مرورگر firefox بود Action مورد نظر را انجاد دهد.
  • mod_auth : جهت اعتبار سنجی و یا احرازهویت استفاده می  شود.
  • mod_ssl : با این ماژول می توانید از HTTPS استفاده نمایید.
  • mod_bwlimited : کنترل پهنای باند، سرعت، تعداد کانکشن با استفاده از این ماژول امکانپذیر می باشد.

همانطور که عرض شد برای apache ماژول های بسیاری منتظر شده که در آینده به اختصار پر کاربردترین module ها در پست جدید معرفی و آموزش داده خواهد شد.

عملکرد و بازدهی آپاچی :

بجای اجرای یک معماری تک پردازشی، آپاچی ماژول های چند پردازشی (MultiProcessing Modules – MPMs) متنوعی را ارائه کرده است، که آن را قادر می سازد تا در مدهای Process-based, hybrid و event-hybrid سرویس دهی نمایید با این تفاسیر پیداست برسی و انتخاب مد کاری آپاچی با توجه به هندل کردن request های بیشتر در زمان معقول مهم می باشد. در تحویل محتوای Static اپاچی ۲.۲ بطور قابل ملاحظه ای کندتر از وب سرور Nginx و varnish عمل می کند. برای رفع این مشکل Event MPM را تولید کردند که از ترکیب پردازش ها و thread های متعدد برای هر پردازش برای مد event-based بصورت غیر همزمان استفاده می کند. در نوع معماری و نوع پیاده سازی آن در اپاچی ۲.۴ عرضه شد تا performance بهتری را در این ورژن به شاهد باشیم، هرچند در benchmark هنوز هم سرعت پاسخ به درخواست های static نصف وب سرور nginx است.برای سرویس دهی اپاچی فقط به HTTP محدود نبوده و محصولات بسیاری را جهت سرویس دهی تولید کرده است مانند پاسخ دهی به نرم افزار های جاوا و big data و… که جدا از سرویس HTTP می باشد.

Nginx

وب سرور Nginx رایگان بوده و بصورت OpenSource عرضه شده است. این وب سرور در حال حاضر توسط پلتفرم های unix, windows و mac پشتیبانی می شود. حدود ۱۲ درصد از سایت های موجود از این وب سرور استفاده می کنند. این پروژه در سال ۲۰۰۱ شروع بکار کرد و توسط یک توسعه‌دهنده به نام ایگور سیسووف به مرحله اجرا درآمد تا در یکی از وب‌سایت‌های پرترافیک به نام رامبرلر عملیاتی شود. این وب‌سایت در سال ۲۰۰۸، روزانه بیش از ۵۰۰ میلیون درخواست HTTP داشته است.

nginx می تواند طوری عملیاتی شود که محتوای dynamic مربوط به HTTP را با استفاده از FastCGI، برای اسکریپت از SCGI و برای برنامه های تحت سرور از WSGI استفاده نمایید. از این وب سرور نیز میتوان به عنوام نرم افزار Load Balancer استفاده کرد. nginx از رویش asynchronous event-driven استفاده میکند تا request ها را پاسخ دهد، این نوع معماری باعث می شود تا لود سرور در زمان High Load شدن قابل پیش بینی باشد.

امکانات HTTP proxy و Web server :

  • هندل کردن بیش از ۱۰۰۰۰ کانکشن همزمان با کمترین میزان مصرف حافظه (۲.۵ مگابایت برای ۱۰۰۰۰ اتصال HTTP)
  • هندل کردن فایل های static
  • Reverse Proxy با استفاده از Caching
  • پیاده سازی Load Balancing
  • قابلیت Fault tolerance
  • قابلیت TLS/SSL با SNI  و پشتیبانی از OCSP stapling با استفاده از OpenSSL
  • Fast CGI, SCGI و uWSGI با پشتیبانی از chaching
  • سازگاری با IPV6
  • پشتیبانی از پروتکل HTTP/2
  • WebSockets و HTTP/1.1 اپگرید شده است.
  • قابلیت Streaming برای فرمت های FLV و MP4
  • اعتبار سنجی روی Webpage ها
  • قابلیت فعال سازی gzip
  • امکان URL rewriting
  • اعمال محدودیت روی connection ها
  • اعمال محدودیت تعداد پردازش ها
  • کنترل پهنای باند
  • کنترل بر اسال محدوده IP
  • ردگیری کاربران
  • پشتیبانی از زبان اسکریپتی Perl
  • فایروال برنامه های تحت وب با استفاده از ماژول Naxsi
  • پشتیبانی از SMTP, POP3 و IMAP
  • بهره گیری از تعداد زیاد ماژول های third party

مفسر htaccess در این وب سرور پشتیبانی نمی شود. هرچند در دید اول این مورد نقص یا کمبود به نظر میرسد اما این مورد به دلایلی که در مقلات بعدی ذکر خواهیم کرد باعث افزار سرعت شده و کارایی وب سرور را افزایش خواهد داد.

معرفی برخی از ماژول های توسعه یافته معروف به اختصار :

  • Accept Language Module : دریافت زبان بصورت هدر parser
  • Audio Track for HTTP Live Streaming : تولید ترک صوتی برای پخش زنده صوت (HLS)
  • HTTP Drizzle : ارتباط مستقیم با MySQL
  • Upstream Fair Balancer : توضیع request های دریافت شده روی خلوت ترین سرور
  • Limit Upstream Connection : محدود کردن connection ها برای هر سرور روی Upstream
  • MP4 Streaming Lite : نمایش فایل تصویری H.264/MP4 با زمان مشخص شده به همراه پارامتر Start در Url
  • Naxsi : فایروال برای برنامه های تحت وب
  • nginx-ip-blocker : یک مسدود کننده IP کاربردی در حافظه اشتراکی
  • Notice : یک سرو کننده فایل های Static به درخواست های POST
  • PageSpeed : بازنویس مجدد صفحات وب جهت کاهش Latency در پاسخ و کاهش مصرف پهنای باند
  • HTTP Redis : ماژول پشتیبانی از Redis
  • Secure Download : تولید لینک دانلود با تاریخ انقضا
  • NGINX Upload Progress Moduled : ردگیری و گزارش مراحل آپلود
  • و …

Lighttpd

سریع، امن و سازگار با محیط های مختلف ۳ کلمه کلیدی برای معرفی lighttpd می باشد. این وب سرور برای سرویس دهی در شرایط High Load و High Performance طراحی شده است. طبق تعاریف در سایت lighttpd این وب سرور در میان دیگر وب سرور ها کمترین میزان مصرف رم را به خود اختصاص داده است.امکانات پیشرفته ان نظیر FastCGI, CGI, Auth, Output-Compression, URL-Rewriting و … باعث شده تا این وب سرور یک انتخاب عالی برای سرور های High Load باشد.

این وب سرور در گذشته توسط دو وبسایت Youtube و Meebo استفاده می شد. برخی از ماژول های آپاچی نیز در این وب سرور قابل استفاده می باشد.

امکانات و قابلیت ها :

  • قابلیت پیاده سازی Load Balancing روی FastCGI و SCGI همچنین پشتیبانی از HTTP Proxy
  • پشتیبانی از chroot
  • مکانیزم برسی رویداد های وب سرور
  • پشتیبانی از URL Rewriting
  • پشتیبانی از پروتکل های امنیتی مانند openssl و TLS/SSL
  • اعتبار سنجی مقابل سرور های LDAP
  • ابزار آماری RRDtool
  • پشتیبانی از Virtual host
  • پشتیبانی از ماژول ها
  • پشتیبانی از حالت مینیمال WebDAV
  • پشتیبانی از Servlet (AJP)
  • پشتیبانی از فشرده سازی و در ورژن های جدیدتر نیز Mod_deflate نیز پشتیبانی می شود.
  • بسیار کم حجم (کمتر از ۱ مگابایت)
  • طراحی شده بصورت تک پردازشی به همراه چند thread

معرفی برخی از ماژول های توسعه یافته معروف به اختصار :

  • mod_webdav :  پشتیبانی از webdav
  • mod_compress : پشتیبانی از فشرده سازی جهت کاهش لود و افزایش سرعت
  • mod_evasive : ماژول جلوگیری از DDos
  • mod_fastcgi : ماژول FastCGI
  • mod_redirect : جهت redirect کردن url استفاده می شود.
  • mod_rrdtool : آمار وضعیت سرور و شبکه
  • mod_secdownload : اعتبار سنجی کاربر جهت استفاده از لینک دانلود
  • mod_userdir : پشتیبانی از public_html برای هر یوزر
  • mod_flv_streaming : پخش فایل های flv بصورت زنده
  • و …

ماژول های دیگری نیز برای این وب سرور در دسترس می باشد که با جستجو در اینترنت قابل دسترسی می باشد.

LiteSpeed

این وب سرور توسط ۲% از وب سایت های جهان در حال استفاده می باشد. لایت اسپید بصورت تخصصی برای سایت های پربازدید طراحی شده و تجربه شخصی بنده هم در این خصوص این مورد را به من ثابت کرده است. زمانی که شما از آپاچی به لایت اسپید وب سرور را سوییچ می کنید لود سرور به ۱/۳ کاهش میابد! البته این مورد به شرایط و نوع سرویس دهی وب سایت شما نیز بستگی خواهد داشت. هرچند لایت اسپید بصورت free نیز قابل استفاده می باشد اما برای داشتن performance بهتر باید لایسنس آن را تهیه نمایید. پرداخت هزینه برای لایسنس زمانی توجیح مالی پیدا می کند که از هزینه های سمت سرور و شبکه شما کاسته شود.

LSWS با اپاچی سازگار است، به این معنی که تقریبا اکثر قابلیت های اپاچی مانند htaccess, Mod Security و Mod Rewrite را پشتیبانی میکند. لایت اسپید در سال ۲۰۱۶ جایگاه چهارم را در بیین وب سرور های در حال استفاده به خود اختصاص داده است و ممکن است علت این جایگاه این باشد که این وب سرور هزینه استفاده داشته و تقریبا رایگان نمی باشد. از دیگر نقاط مثبت ان میتوان به کاهش هزینه نگه داری و خریداری سخت افزار، امنیت . پایداری و performance بالا نام برد.

معرفی برخی از ماژول های توسعه یافته معروف به اختصار :

  • Cache : فعال سازی کش
  • Lua پشتیبانی از Lua
  • PageSpeed : ماژول افزایش سرعت
  • Registering : ماژول register

Internet Information Services

یک وب سرور که بصورت کامل با ویندوز سازگار بوده و فقط هم روی همین پلتفرم قابل استفاده می باشد. IIS پروتکل های HTTP, HTTPS, FTP, FTPS, SMTP و NNTP را پشتیبانی می کند. IIS به عنوان سرویس همراه ویندوز های سرور ارائه شده و به عنوان یک وب سرور رایگان محسوب نمی گردد. آخرین نسخه IIS در زمان تالیف این مقاله نسخه ۱۰ می باشد که به همراه ویندوز سرور ۲۰۱۶ و ویندوز ۱۰ ارائه شده است. IIS از زبان های خوانواده .Net و ASP.net و دیگر زبان ها نظیر PHP پشتیبانی می کند.

امکانات و قابلیت ها :

  • IIS از مکانیزم های متعدد احراز هویت نظیر Anonymous authentication, Basic access authentication, Digest access authentication, Integrated Windows Authentication, UNC authentication و  NET Passport Authentication پشتیبانی می کند.
  • پشتیبانی از انواع ماژول های امنیتی مانند فیلتر کردن درخواست ها و اجرای اعتبار سنجی روی URL ها و ..
  • پشتیبانی از فشرده سازی
  • ماژول های مربوط به کش
  • ماژول های لاگین
  • پشتیبانی از ASP.net 4.5 در کنار ASP.net 3.5
  • پشتیبانی از پروتکل WebSocket
  • پشتیبانی از SNI
  • کنترل مصرف CPU به ازای هر برنامه
  • ساسپند کردن سایت های IDLE جهت افزایش بازدهی سرور
  • و…

باید به این مورد توجه داشته باشید که زمانی باید از IIS استفاده کنید که برنامه مورد نظر شما جهت سرویس دهی از خانواده .net باشد. راه اندازی این وب سرور برای زبان های PHP و دیگر زبان های غیر مایکروسافتی کاملا اشتباه بوده و ممکن است شما را در آینده با مشکلات زیادی مواجه کند. باز هم این نکته را ذکر میکنم که پشتیبانی IIS فقط برای مکمل بوده و تحت فشار و استرس کاری کم قابل استفاده می باشد.

مقاله ارائه شده جهت آشنایی شما با وب سرور های پر کاربرد ارائه شد تا اندکی با وب سرور و برند های آن آشنایی پیدا کنید. توجه داشته باشید مفاهیم در کنار تجربه بهترین انتخاب را برای شما رقم خواهد زد.

آخرین آمار استفاده از وب سرور ها در سال ۲۰۱۶ در تصویر زیر قابل مشاهده می باشد.

تعداد زیادی وب سرور تولید و در حال استفاده می باشد که میزان کاربران آن کمتر از ۰.۱% است.

  • Zope
  • Gunicorn
  • WEBrick
  • Jetty
  • Kangle
  • Zeus
  • Thin
  • Resin
  • BaseHTTPServer
  • Tornado
  • Yahoo Traffic Server
  • Monkey
  • Mongrel
  • Cherokee
  • Roxen
  • Paste WSGI HTTP Server
  • AOLserver
  • CherryPy
  • Hiawatha
  • IceWarp
  • SAP J2EE Engine
  • Abyss
  • H2O
  • WebToB
  • WebSTAR
  • KomHttpServer
  • Twisted
  • Yaws
  • NaviServer
  • Jexus
  • WebHare
  • RaidenHTTPD
  • Orion
  • Xitami
  • AllegroServe
  • nxweb
  • CouchDB
  • Misultin
  • Hunchentoot
  • G-WAN
  • Barracuda Server
  • Caudium
  • Mathopd
  • Virtuoso
  • Comanche
  • FAPWS
  • TUX
  • Ada Web Server
  • Lwan
  • Mongrel2
  • Tntnet
  • Trifork
  • Wildcat
  • Blazix
  • Noelios Restlet Engine
  • Swazoo
  • Tcl-Webserver
  • WebSiphon

سعید یاوری

فعال در حوزه شبکه و امنیت DevSecOps

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نوشته های مشابه

دکمه بازگشت به بالا