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

وب سرورها در کنار پکیجی از پروتکلها و سرویسها مانند سرویسهای SMTP ،FTP و… اقدام به سرویسدهی میکنند. قبل از انتخاب نوع وب سرور باید نوع سرویسی که قرار است روی سرور ارائه شود مشخص کنید تا با توجه به نیاز خود وب سرور را انتخاب نمایید. انتخاب اشتباه ممکن است در سرورهای Critical Mission موجب قطع سرویس دهی شود، هرچند در سرورهای Low priority تغییر نوع وب سرور مشکل خاصی ایجاد نخواهد کرد. علاوه بر موارد ذکر شده انتخاب وب سرور گاها به پلتفرم سیستم عامل، امنیت و زبان برنامه نویسی استفاده شده نیز مرتبط است. برای مشاهده مفایسه وب سرور و اپلیکیشن سرور کلیک نمایید.
وب سرور چگونه کار میکند؟
از جنبه نرم افزاری، یک وب سرور شامل چندین بخش است که چگونگی دسترسی کاربران به فایلهای روی هاست، را کنترل میکند. یک سرور HTTP بخشی از نرم افزاری است که URL ها و HTTP را درک میکند. این سرور از طریق نام دامنهی وبسایتهایی که در آن ذخیره میشوند، قابل دسترسی است و محتوا را به دستگاه کاربر نهایی عرضه میکند. از وب سرورهای معروف میتوان به Apache، Nginx، IIS و LiteSpeed اشاره کرد.
از جنبه سخت افزاری، وب سرور یک رایانه است که نرم افزار وب سرور و فایلهای اجزای وب سایت را ذخیره میکند، به عنوان مثال اسناد HTML، تصاویر، استایل شیتهای CSS و فایلهای جاوا اسکریپت را میتوان نام برد. این وب سرور به اینترنت وصل است و از تبادل اطلاعات با سایر دستگاههای متصل به وب پشتیبانی میکند. در ابتدایی ترین سطح، هر بار که مرورگر به یک فایلی که در یک سرور وب میزبانی میشود نیاز پیدا میکند، مرورگر فایل را از طریق HTTP درخواست میکند. هنگامی که درخواست به وب سرور میرسد، سرور HTTP درخواست را میپذیرد، سند درخواستی را پیدا میکند، و آن را از طریق HTTP به مرورگر ارسال میکند. در صورتی که پیدا نشود، یک پاسخ ۴۰۴ میدهد.
ویژگی های وب سرور
- پشتیبانی از HTTPS جهت اتصال سالم و ایمنتر و استفاده کردن از پورت 443 به جای 80
- فشرده سازی مطالب با استفاده از کد سازی GZIP و …
- اداره کردن مفاهیم استاتیک و داینامیک که از زبانهای برنامه نویسی مختلفی مانند PHP ،ASP.net و … پشتیبانی میکند.
انواع وب سرورهای معروف
تنوع نیاز به سرویسهای مختلف اینترنتی باعث شده تا وبسروهای مختلفی را شاهد باشیم که هر کدام خدمات خاص خود را ارائه میدهند و کاربردهای متفاوتی دارند. آشنایی با این وبسروها به شما کمک میکند وبسرور مناسب با نیاز خود را انتخاب کنید. در زیر چند وب سرور معروف را برای شما شرح میدهیم:
وب سرور Apache
وب سرور آپاچی یکی از معروفترین وبسرورها است که اولین رتبه را دارد. آپاچی در سال 1995 منتشر شد و پایداری و قدرت آن باعث شد تا نقشی کلیدی در دنیای WWW ایفا کند. در حال حاضر بیشتر از ۱۰۰ میلیون وبسایت از وبسرور آپاچی خدمت میگیرند. بستر اصلی وبسرور آپاچی در پلتفرم لینوکس میباشد ولی امکان نصب آن روی پلتفرم ویندوز هم وجود دارد. وبسرور آپاچی ویژگیهای زیادی دارد که یکی از مهمترین ویژگی آن متنباز بودن است. این ویژگی توسعهدهندگان را برای تعامل بیشتر و شخصیسازی وبسرور آپاچی آزاد گذاشته است و در نتیجه شاهد توسعه بیشتر آپاچی نسبت به دیگر وبسرورها هستیم. نام apache از نام یکی از قبیلههای بومی آمریکا گرفته شده است که در استراتژی و جنگ مهارت بالایی داشتند.

از زبانهای برنامه نویسی که در آپاچی پر استفاده است به Perl ،Python ،TCL و PHP اشاره کرد. ماژولهای mod_access ،mod_auth ،mod_digest و mod_auth_digest ،Secure Socket Layer و Transport Layer Security و … ماژولهای ذکر شده جزو ماژولهای داخلی apache هستند که معمولا به همراه آن نصب و کامپایل خواهند شد.
امکانات وب سرور Apache
- هندل کردن فایلهای static و فایلهای index
- لود و استفاده از ماژولها بصورت پویا
- ماژول پردازش چندگانه درخواستها [MPM]
- پروکسی معکوس به همراه کش
- بسیار مقیاس پذیر(براحتی 10000 اتصال را بصورت همزمان هندل میکند)
- پشتیبانی از IPV6
- پشتیبانی از htaccess
- WebSocket, FastCGI, SCGI, AJP و uWSGI به همراه پشتیبانی از کش
- مکانیزم Load Balancing بصورت همزمان
- قابلیت Fault Tolerance و Failover به همراه بازیابی خودکار
- قابلیت TLS/SSL با SNI و پشتیبانی از OCSP stapling با استفاده از OpenSSL
- ردگیری Session و کاربر
- پشتیبانی از پروتکل HTTP/2
- محدودیت در تعداد درخواستهای پردازش
- پشتیبانی از URL Rewriting
- پشتیبانی از بازنویسی هدرها و محتوا
- اعمال محدودیت در کانکشنهای فعال
- پشتیبانی از CGI
- اعمال محدودیت در پهنای باند
- پشتیبان از XML
- پوشه public_html برای هر کاربر
- پشتیبانی از perl و PHP به همراه اسکریپتهای Lua
وب سرور LightSpeed
این سرور یک جایگزین افت کیفیت برای آپاچی است. LSWS میتواند فایلهای آپاچی را مستقیما بارگزاری کند و به عنوان یک آپاچی جایگزین با اکثر پنلهای کنترل میزبان کار کند. همان طور که از نامش مشخص است یکی از سریعترین خدمترسانهای اینترنتی است که برای سایتهای پربازدید کاربرد زیادی دارد. تجربه نشان داده است سرعت بارگذاری وبسرور LiteSpeed نسبت به وبسرورهای دیگری مثل آپاچی حدوداٌ یک سوم سریعتر است.

البته امکانات و سرعت وب سرور LiteSpeed برای مشتری ارزان نیست و برخلاف دیگر وب سرورها برای دسترسی به تمام امکانات این وبسرور باید هزینه خرید لایسنس آن را پرداخت کنید. خرید و همچنین هزینه وبسرور LiteSpeed خیلی هم زیاد نیست. وبسرور LiteSpeed سازگاری زیادی با آپاچی دارد و به همین دلیل شاهد پشتیبانی این وبسرور از قابلیتهای وبسرور آپاچی مانند htaccess ،Mod Security و Mod Rewrite هستیم. این ویژگیها باعث شد تا وبسرور LiteSpeed به سرعت جای خود را در میان سایر وبسرورها باز کند. کاهش هزینههای نگهداری و پایداری و سرعت بالا از ویژگیهای اصلی وبسرور LiteSpeed است.
برخی از ماژول های وب سرور LightSpeed
- ماژول افزایش سرعت
- فعال سازی کش
- ماژول register
- پشتیبانی از Lua
Node.js
Node.js یک پلتفرم سمت سرور است که بر روی بستر JavaScript Engine گوگل کروم ساخته میشود. این پلتفرم توسط رایان داهل در سال ۲۰۰۹ توسعه یافته است. پلتفرم Node.js برای ساخت برنامههای تحت شبکه سریع و قابل توسعه مورد استفاده قرار میگیرد. Node.js از مدل Event-Driven و Non-Blocking I/O استفاده میکند که برنامههای تحت این پلتفرم را سبک و کارآمد میکند. این نوع برنامهها برای پروژههایی که حساسیت داده دارند و به صورت Real-Time بر روی چندین دستگاه اجرا میشوند، گزینه خوبی است.

Node.js یک محیط برنامه نویسی ارائه میکند که به صورت متن باز و Cross-Platform است. برنامههای Node.js با JavaScript نوشته میشوند و میتوانند داخل محیط برنامهنویسی سیستم عاملهای OSX، مایکروسافت ویندوز و لینوکس طراحی و پیاده سازی شوند. Node.js در کنار ویژگیهای خود یک کتابخانه غنی از ماژولهای JavaScript ارایه میدهد که پروسهی توسعه برنامههای تحت وب را بسیار آسان میسازد.
ویژگی های Node.js
- تمام APIهای کتابخانه Node.js به صورت Asynchronous هستند که بلاک نمیشوند. این بدان معنا است که در Node.js، سرور هیچگاه منتظر دریافت پاسخ API نمیماند. سرور بعد از شروع اجرای یک درخواست به سمت درخواست API بعدی میرود. مکانیسم Event در Node.js برنامه را قادر میسازد تا پاسخ درخواستهای API قبلی را دریافت کند.
- با توجه به اینکه Node.js بر روی بستر V8 JavaScript Engine گوگل کروم ساخته شده، سرعت اجرای کد در آن بسیار سریع است.
- بدون Buffer – برنامههای تحت Node.js هیچ دیتایی را Buffer نمیکنند. این برنامهها به سادگی خروجی دادهها را در تکههای کوچکتر ارایه میکنند.
- Noed.js از یک پروسه با چرخههای بیانتها استفاده میکند. این پلتفرم از یک برنامهی تک پروسهای استفاده میکند که همان یک برنامه قادر است به تعداد بسیار بالاتری درخواست به نسبت وب سرورهای سنتی مثل آپاچی (Apache) پاسخ دهد.
وب سرور IIS
(IIS (Internet Information Server یک محصول با کارایی بالا از مایکروسافت است که بر روی سیستم عاملهای ویندوز اجرا میشود. این سرور وب تقریبا تمام ویژگیهای آپاچی را دارد با این تفاوت که متن باز نیست و اضافه کردن ماژولهای شخصی کار آسانی نیست. از آنجایی که با تمام سیستم عاملهای ویندوز سازگاری دارد، کار کردن با آن تقریبا راحت است و در صورت بروز مشکل مایکروسافت پشتییانی میکند. این وبسرور توسط مایکروسافت توسعه داده میشود. با یک وبسرور ویندوزی طرف هستیم که تنها به پلتفرم ویندوز خدمت میدهد. وبسرور Internet Information Services که به اختصار با نام IIS شناخته میشود به خوبی از پروتکلهای HTTPS ،HTTP ،FTP ،FTPS ،SMTp و NNTP پشتیبانی میکند. در نسخههای ویندوز سرور تعبیه شده است و یک وب سرور رایگان نیست.

وبسرور IIS سازگاری خوبی با زبانهای برنامهنویسی ASP.net، .Net دارد.از دیگر ویژگیهای آن محدود کردن مصرف پردازنده برای هر برنامه، ماژولهای متنوع و پشتیبانی از پروتکل WebSocket است. به این نکته دقت کنید که تنها باید زمانی وبسرور IIS را به خدمت بگیرید که برنامه شما با خانواده .Net توسعه داده شده باشد. راه اندازی این وب سرور برای زبانهای PHP و دیگر زبانهای غیر مایکروسافتی کاملا اشتباه بوده و ممکن است شما را در اینده با مشکلات زیادی مواجه کند.
امکانات و قابلیت های وب سرور IIS
- پشتیبانی از فشرده سازی
- پشتیبانی از پروتکل WebSocket
- ماژولهای لاگین
- پشتیبانی از ASP.net 4.5 در کنار ASP.net 3.5
- کنترل مصرف CPU به ازای هر برنامه
- پشتیبانی از SNI
- ماژولهای مربوط به کش
- پشتیبانی از انواع مازولهای امنیتی مانند فیلتر کردن درخواستها و اجرای اعتبار سنجی روی URLها و ..
- IIS از مکانیزمهای متعدد احراز هویت نظیر Anonymous authentication, Basic access authentication, Digest access authentication, Integrated Windows Authentication, UNC authentication و NET Passport Authentication پشتیبانی میکند.
Lighttpd
وبسرور Lighttpd یکی از امنترین وبسرورها است و میتوان به ماژول مخصوص برای جلوگیری از حملات DDos اشاره کرد. Lighttpd سرویس بسیار خوبی در موقعیتهای High Performance و High load عرضه میکند. این وبسرور نسبت به سایر وبسرورها به منابع بسیار کمی نیاز دارد و کمترین میزان رم را اشغال میکند. وبسرور Lighttpd به امکانات پیشرفتهای مانند FastCGI ،CGI و URL-Rewriting مجهز است و باعث شده این وبسرور گزینه خوبی برای سرورهایی با حجم ترافیک بالا باشد. وبسایت معروف و پرترافیک یوتیوب در گذشته از این وبسرور خدمت گرفته است. برخی از ماژولهای آپاچی را میتوان در وبسرور Lighttpd به کار گرفت.

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

دیویدسون در ابتدا امیدوار بود که تامکت یک پروژه منبع باز باشد، و از آنجایی که نام بسیاری از پروزههای منبع باز کتابهای O’Reilly و جلد مرتبط با آنها شبیه به اسم یک حیوان است، نام این پروژه با یک حیوان مرتبط شده است. در حال حاضر این وبسرور قابلیت نصب بر روی اکثریت توزیعهای استاندارد لینوکسی را دارا بوده و شما میتوانید نسبت به نیاز خود به نصب آن بپردازید.
وب سرور Nginx
این وبسرور رایگان و متنباز است و همین باعث محبوبیت زیاد وبسرور Nginx شده است. این وبسرور بهخوبی با پلتفرمهای یونیکس، ویندوز و مک سازگاری دارد و حدوداٌ ۱۲ درصد از وبسایتهای اینترنتی خدمات خود را از وبسرورهای Nginx دریافت میکنند. سرور Nginx شامل پروکسی IMAP/POP3 است. از مهم ترین ویژگیهای آن عملکرد بالا، پایداری، پیکربندی ساده و استفاده کم از منابع است. Nginx برای مدیریت درخواستها از روش منحصر به فرد خود استفاده میکند. هر چند که ممکن است در برخی از وب سرورهای دیگر از این روش نیز استفاده شود. وب سایت مشهوری مثل فیسبوک از این وب سرور استفاده میکند.

هدف از به وجود آمدن وب سرور Nginx این است که در عین مصرف منابع سخت افزاری کم، بازدهی خیلی خوبی به همراه داشته باشد. این وب سرور در واقع برای سرویس دهی به یک پرتال بسیار پرترافیک روسی به تولید شد اما در ادامه به خاطر امکانات و تواناییهای آن محبوب شد و در حال حاضر نیز به عنوان یکی از وب سرورهای محبوب به حساب میآید.
امکانات اصلی وبسرور Nginx
- وبسرور Nginx بیشتر از ۱۰ هزار اتصال همزمان را با مصرف تنها ۲.۵ مگابایت حافظه برقرار میکند.
- تعامل با فایلهای Status
- پشتیبانی از پروتکلهای IMAP, SMTP و POP3
- استریم فرمتهای ویدئویی FLV و MP4
- اجرای Load Balancing
- سازگاری کامل با پروتکل IPV6
- کنترل پهنای باند
- اعمال محدودیت روی connectionها
- هندل کردن فایلهای static
- بهره گیری از تعداد زباده ماژولهای third party
- قابلیت Fault Tolerance
- رصد کردن کاربران
- وبسرور Nginx از htaccess پشتیبانی نمیکند.
- از asynchronous event-driven استفاده میکند تا requestها را پاسخ دهد
- میتواند طوری عملیاتی شود که محتوای داینامیک مربوط به HTTP را با استفاده از FastCGI، برای اسکریپت از SCGI و برای برنامههای تحت سرور از WSGI استفاده نمایید.