معرفی برترین وب سرورها
دانش در مورد وب سرور ها نیازی حیاتی برای یک مدیر سرور محسوب میشود، تا از بهترین گزینه جهت سرویس دهی و یا جایگزینی وب سرور در سرور عملیاتی استفاده نمایید. در این مقاله سعی بر این بوده که معرفی برترین وب سرورها معروف به همراه نمودار های بازدهی و … مورد برسی قرار گیرد. قطعا این مقاله برای شما پرکاربرد خواهد بود و مطالعه ان توصیه میشود. با مطالعه این مقاله یا مقالات مشابه درک شما از عملکرد وب سرور افزایش خواهد یافت. توجه داشته باشید این مقاله به معرفی برترین وب سرورها ، آموزش، نصب و کانفیگ نپرداخته و فقط عملکرد و قابلیت های وب سرور ها مورد بررسی قرار خواهد گرفت.
وب سرور چیست ؟
وب سرور برنامه ای است که از HTTP یا همان پروتوکل انتقال ابرمتن (Hypertext Transfer Protocol) جهت ارائه صفحات وب به کاربر استفاده میکند. اطلاعات ارائه شده توسط کلاینت در سیستم کاربر که به زبان ساده همان مرورگرها هستند ترجمه شده و برای کاربر نمایش داده میشود. ممکن است به Server ها و نرم افزار های سرویس دهنده نیز وب سرور گفته شود که در این مقاله منظور از وب سرور سرویس دهنده HTTP میباشد.
تمامی میزبانان وبسایت ها باید از وب سرور جهت ارائه سرویس استفاده کنند، از این رو باید یکی از وب سرور های Apache [یکی از پر استفاده ترین وب سرور ها] IIS [Microsoft’s Internet Information Server], Nginx, GWS, lighttpd, LiteSpeed و… را جهت ارائه سرویس انتخاب نمایند.
معمولا وب سرور ها در کنار پکیجی از پروتکل ها و سرویس ها مانند سرویس های SMTP,FTP و… اقدام به سرویس دهی میکنند.قبل از انتخاب نوع وب سرور باید نوع سرویسی که قرار است روی سرور ارائه شود بطور کامل مشخص شود تا با توجه به نیاز خود وب سرور را انتخاب نمایید. توجه داشته باشید انتخاب اشتباه ممکن است در سرور های Critical Mission موجب قطع سرویس دهی گردد، هرچند در سرور های Low priority تغییر نوع وب سرور مشکل خاصی ایجاد نخواهد کرد. علاوه بر موارد ذکر شده انتخاب وب سرور گاها به پلتفرم سیستم عامل، امنیت و زبان برنامه نویسی استفاده شده نیز مرتبط میباشد.
معرفی وب سرور ها
Apache : آپاچی یکی از پر استفاده ترین وب سرور های دنیا میباشد. اپاچی در سال 1995 منتشر شد و پایداری و قدرت آن باعث شد تا نقشی کلیدی در دنیای WWW ایفا کند.[World Wide Web] پس از انتشار، محبوبیت اپاچی روز به روز افزایش یافت بصورتی که در سال 2009 حدود 100 میلیون وبسایت توسط آپاچی سرو می شد. در گذشته نیز همانند حال apache بر روی سیستم عامل های خانواده unix (بیشتر لینوکس) برای سرویس دهی نصب میشد، هرچند این وب سرور میتواند روی سرور های ویندوزی نیز سرویس دهی نمایید. در ویندوز اغلب developer ها و برنامه نویس ها جهت اجرا و کامپایل کد خود از اپاچی استفاده میکنند. با افتخار اپاچی یک وب سرور متن باز میباشد که همین امر باعث توسعه روز افزون ان شده است. نام apache برگرفته از نام یکی از قبیله های بومی آمریکاست که در استراتژی و جنگ مهارت بالایی داشتند.
آپاچی دارای امکانات زیادی میباشد که بسیاری از انها با کامپایل شدن به این وب سرور اضافه خواهد شد که قابلیت های 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]
- بسیار مقیاس پذیر(براحتی 10000 اتصال را بصورت همزمان هندل میکند)
- هندل کردن فایل های 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 اپاچی 2.2 بطور قابل ملاحظه ای کندتر از وب سرور Nginx و varnish عمل میکند. برای رفع این مشکل Event MPM را تولید کردند که از ترکیب پردازش ها و thread های متعدد برای هر پردازش برای مد event-based بصورت غیر همزمان استفاده میکند. در نوع معماری و نوع پیاده سازی آن در اپاچی 2.4 عرضه شد تا performance بهتری را در این ورژن به شاهد باشیم، هرچند در benchmark هنوز هم سرعت پاسخ به درخواست های static نصف وب سرور nginx است.برای سرویس دهی اپاچی فقط به HTTP محدود نبوده و محصولات بسیاری را جهت سرویس دهی تولید کرده است مانند پاسخ دهی به نرم افزار های جاوا و big data و… که جدا از سرویس HTTP میباشد.
Nginx : وب سرور Nginx رایگان بوده و بصورت OpenSource عرضه شده است. این وب سرور در حال حاضر توسط پلتفرم های unix, windows و mac پشتیبانی میشود. حدود 12 درصد از سایت های موجود از این وب سرور استفاده میکنند. این پروژه در سال ۲۰۰۱ شروع بکار کرد و توسط یک توسعهدهنده به نام ایگور سیسووف به مرحله اجرا درآمد تا در یکی از وبسایتهای پرترافیک به نام رامبرلر عملیاتی شود. این وبسایت در سال ۲۰۰۸، روزانه بیش از ۵۰۰ میلیون درخواست HTTP داشته است.
nginx میتواند طوری عملیاتی شود که محتوای dynamic مربوط به HTTP را با استفاده از FastCGI، برای اسکریپت از SCGI و برای برنامه های تحت سرور از WSGI استفاده نمایید. از این وب سرور نیز میتوان به عنوام نرم افزار Load Balancer استفاده کرد. nginx از رویش asynchronous event-driven استفاده میکند تا request ها را پاسخ دهد، این نوع معماری باعث میشود تا لود سرور در زمان High Load شدن قابل پیش بینی باشد.
امکانات HTTP proxy و Web server :
- هندل کردن بیش از 10000 کانکشن همزمان با کمترین میزان مصرف حافظه (2.5 مگابایت برای 10000 اتصال 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 : سریع، امن و سازگار با محیط های مختلف 3 کلمه کلیدی برای معرفی lighttpd میباشد. این وب سرور برای سرویس دهی در شرایط High Load و High Performance طراحی شده است. طبق تعاریف در سایت lighttpd این وبسرور در میان دیگر وب سرور ها کمترین میزان مصرف رم را به خود اختصاص داده است.امکانات پیشرفته ان نظیر FastCGI, CGI, Auth, Output-Compression, URL-Rewriting و … باعث شده تا این وب سرور یک انتخاب عالی برای سرور های High Load باشد.
این وب سرور در گذشته توسط دو وبسایت YouTobe و Meebo استفاده می شد. برخی از ماژول های اپاچی نیز در این وب سرور قابل استفاده میباشد.
امکانات و قابلیت ها :
- قابلیت پیاده سازی Load Balancing روی FastCGI و SCGI همچنین پشتیبانی از HTTP Proxy
- پشتیبانی از chroot
- مکانیزم برسی رویداد های وب سرور
- پشتیبانی از URL Rewriting
- پشتیبانی از پروکل های امنیتی مانند openssl و TLS/SSL
- اعتبار سنجی مقابل سرور های LDAP
- ابزار اماری RRDtool
- پشتیبانی از Virtual host
- پشتیبانی از ماژول ها
- پشتیبانی از حالت مینیمال WebDAV
- پشتیبانی از Servlet (AJP)
- پشتیبانی از فشرده سازی و در ورژن های جدیدتر نیز Mod_deflate نیز پشتیبانی میشود.
- بسیار کم حجم (کمتر از 1 مگابایت)
- طراحی شده بصورت تک پردازشی به همراه چند 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 : این وب سرور توسط 2% از وب سایت های جهان در حال استفاده میباشد. لایت اسپید بصورت تخصصی برای سایت های پربازدید طراحی شده و تجربه شخصی بنده هم در این خصوص این مورد را به من ثابت کرده است. زمانی که شما از اپاچی به لایت اسپید وب سرور را سوییچ میکنید لود سرور به 1/3 کاهش میابد! البته این مورد به شرابط و نوع سرویس دهی وب سایت شما نیز بستگی خواهد داشت. هرچند لایت اسپید بصورت free نیز قابل استفاده میباشد اما برای داشتن performance بهتر باید لایسنس ان را تهیه نمایید. پرداخت هزینه برای لایسنس زمانی توجیح مالی پیدا میکند که از هزینه های سمت سرور و شبکه شما کاسته شود.
LSWS با اپاچی سازگار است، به این معنی که تقریبا اکثر قابلیت های اپاچی مانند htaccess, Mod Security و Mod Rewrite را پشتیبانی میکند. لایت اسپید در سال 2016 جایگاه چهارم را در بیین وب سرور های در حال استفاده به خود اختصاص داده است و ممکن است علت این جایگاه این باشد که این وب سرور هزینه استفاده داشته و تقریبا رایگان نمیباشد. از دیگر نقاط مثبت ان میتوان به کاهش هزینه نگه داری و خریداری سخت افزار، امنیت . پایداری و performance بالا نام برد.
معرفی برخی از ماژول های توسعه یافته معروف به اختصار :
- Cache : فعال سازی کش
- Lua : پشتیبانی از Lua
- PageSpeed : ماژول افزایش سرعت
- Registering : ماژول register
Internet Information Services : یک وب سرور که بصورت کامل با ویندوز سازگار بوده و فقط هم روی همین پلتفرم قابل استفاده میباشد. IIS پروتکل های HTTP, HTTPS, FTP, FTPS, SMTP و NNTP را پشتیبانی میکند. IIS به عنوان سرویس همراه ویندوز های سرور ارائه شده و به عنوان یک وب سرور رایگان محسوب نمی گردد. اخرین نسخه IIS در زمان تعلیف این مقاله نسخه 10 میباشد که به همراه ویندوز سرور 2016 و ویندوز 10 ارائه شده است. 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 فقط برای مکمل بوده و تحت فشار و استرس کاری کم قابل استفاده میباشد.
مقاله ارائه شده جهت اشنایی شما با وب سرور های پر کاربرد ارائه شد تا اندکی با وب سرور و برند های ان اشنایی پیدا کنید. توچه داشته باشید مفاهیم در کنار تجربه بهترین انتخاب را برای شما رقم خواهد زد.
اخرین امار استفاده از وب سرور ها در سال 2016 در تصویر زیر قابل مشاهده میباشد.
تعداد زیادی وب سرور تولید و در حال استفاده میباشد که میزان کاربران ان کمتر از 0.1% است.
- 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