فهرست مطالب این مقاله:
IIS مخفف عبارت Internet Information Services هستش که موضوعی چندوجهی و لایه ای به حساب میاد. در این راهنما قصد داریم وب سرور IIS رو بررسی کنیم و با کاربردها و مزایایی که ارائه میده بیشتر آشنا بشیم. با مطالعه این مقاله می تونین درک بهتری از IIS داشته باشین، با کاربردهای اصلی اون آشنا بشین و نکات مهم قبل از به کارگیری وب سرور IIS رو متوجه بشین.
وب سرور چیه؟
قبل از اینکه وب سرور IIS رو تعریف کنیم، اجازه بدین تا اول ببینیم یک وب سرور چیه. بدون شک هر روز از طریق کامپیوتر شخصی یا گوشی هوشمندتان از وب سایت های مختلفی بازدید می کنین. نرم افزاری که مکانیزم نمایش این وب سایت ها رو فراهم می کنه در واقع سرویس وب سرور نامیده می شه.
سرویس های اصلی وب سرور شامل IIS، Nginx و Apache می شه. این سرویس های وب سرور به کمک یک مرورگر وب، این امکان رو به شما میدن تا از طریق کامپیوترهای شخصی و گوشی های هوشمندتون به وب سایت های مختلف دسترسی پیدا کنین.
اما با این حال، داشتن این بسته های نرم افزاری تنها چیزی نیست که برای نمایش یک وب سایت اهمیت داره. برای اینکه یک وب سایت به درستی نمایش داده بشه، به کامپیوتری به نام سرور نیاز داریم. به عبارت دیگه، نمایش وب سایت فقط زمانی امکان پذیره که یک «سرور» و «سرویس وب سرور» با هم ترکیب بشن.
سرور IIS چیه؟
Windows IIS Server یک وب سرور قابل گسترش هستش که توسط مایکروسافت و برای استفاده در سیستم عامل های ویندوز توسعه یافته. اولین نسخه از سرور IIS در 30 می 1995، یعنی بیشتر از 28 سال پیش منتشر شد و در طول این سالها تغییرات زیادی رو پشت سر گذاشته. نسخه های جدید برنامه سرور IIS به طور سنتی همراه با نسخه های جدید سیستم عامل مایکروسافت منتشر می شن.
سرور IIS یک سرور سخت افزاری یا نرم افزاریه که می تونه درخواست های مشتری برای شبکه جهان وب رو با استفاده از پروتکل انتقال ابرمتن (HTTP)، پروتکل امن انتقال ابرمتن (HTTPS) یا سایر پروتکل های مرتبط دیگه مدیریت کنه.
خدمات اطلاعات اینترنتی (IIS) یک نقش سرور هستش که به صورت پیش فرض در تمام نسخه های سیستم عامل مایکروسافت ویندوز سرور نصب شده. مایکروسافت اخیرا مولفه های IIS رو در نسخه های حرفه ای محصولات سیستم عامل دسکتاپ خود مانند ویندوز 10 پرو نیز قرار داده. با این وجود، IIS معمولا به صورت مرکزی روی یک یا چند سیستم عامل مایکروسافت ویندوز سرور نصب و اداره می شه.
صرف نظر از اینکه از چه دستگاه یا سیستم عاملی برای مرور اینترنت استفاده می کنیم، همه ما روزانه با سرورهای وب سر و کار داریم. وقتی URL رو در نوار آدرس مرورگر مورد علاقه خودتون تایپ می کنین، در واقع درخواستی رو به یک وب سرور ارسال می کنین که میزبان وب سایت مورد نظر شماست. محتویات صفحه وب که درخواست مشاهده اون رو دارین، به عنوان بخشی از پاسخ سرور به شما ارائه می شه.
Apache و IIS دو برنامه کاربردی وب سرور هستن که محبوبیت زیادی دارن. IIS یک نقش سرور هستش که در بالای نسخه لایسنس دار ویندوز سرور پیکربندی شده؛ در حالی که Apache یک برنامه کاربردی منبع باز قابل نصبه که معمولا در سیستم عامل های سیستم باز مثل لینوکس استفاده می شه.
ویژگی های وب سرور IIS
سرور Internet Information Services خیلی محبوبه و استفاده از اون گسترده هستش. طیف وسیعی از ویژگی های مفید رو ارائه میده و ابزاری موثر برای خیلی از مدیران IT به حساب میاد. به طور معمول، IIS برای میزبانی وب سایت ها و برنامه های کاربردی با وضعیت ASP.NET استفاده می شه.
البته این سرور برای استفاده به عنوان یک سرور FTP و برای میزبانی سرویس های WCF هم در دسترس هستش و در صورت گسترش می تونه روی پلتفرم های دیگه مثل PHP هم میزبانی بشه.
در ادامه به ویژگی های کلیدی IIS اشاره می کنیم:
+ استخرهای برنامه
استخرهای برنامه (Application Pools) بخش مهمی از سیستم سرور IIS رو تشکیل میدن. یک استخر برنامه مستقل می تونه صفر یا تعداد زیادی پردازش کارگر (Worker Process) رو در حال اجرا داشته باشه. این پردازش های کارگر مسئول اجرای نمونه های برنامه هستن.
در IIS، بعضی از برنامه های کاربری به طور پیش فرض ایجاد می شن. مثلا V2,0 و V4.0 رو در نظر بگیرین که احتمالا در حالت کلاسیک یا یکپارچه هستن. اگه یک استخر یکپارچه باشه، ASP.NET بخشی از پایپ لاین درخواست IIS محسوب می شه. اگه استخر کلاسیک باشه، یک پایپ لاین برای Internet Information Services و یک پایپ لاین جداگانه برای ASP.NET وجود داره. به طور کلی، حداقل از زمانی که IIS 8 منتشر شد، حالت یکپارچه بیشتر مورد استفاده قرار می گیره.
+ احراز هویت
سرور IIS دارای گزینه های احراز هویت مختلفی از جمله Windows auth، Basic و ASP.NET هستش. اگه از نرم افزار اکتیو دایرکتوری استفاده می کنین، Windows Authentication خیلی مفیده چون به شما اجازه میده تا به صورت خودکار از طریق اکانت دامین خود در وب اپلیکیشن ها Sign In کنین.
+ امنیت
IIS دارای ویژگی های امنیتی هستش که از جمله می تونیم به ابزارهای کمکی برای مدیریت گواهی های TLS، اتصال برای فعال کردن SFTP و HTTPS و قابلیت فیلتر کردن درخواست ها اشاره کنیم. با این ویژگی های امنیتی می تونین به طور موثری ترافیک رو در لیست سفید و سیاه قرار بدین. شما می تونین مجوز، قوانین دسترسی و درخواست های لاگ رو پیاده سازی کنین و به مجموعه ای از قابلیت های امنیتی FTP دسترسی داشته باشین.
+ مدیریت از راه دور
ابزارهای مدیریت از راه دور اجازه میدن تا IIS رو از طریق CLO یا PowerShell مدیریت کنین. شما می تونین اسکریپت رو خودتون ایجاد کنین که خیلی از مدیران IT برای اون ارزش قائل هستن چون حداکثر انعطاف پذیری و کنترل رو ارائه میده.
به طور کلی، IIS یک وب سرور همه کاره و کاملا قابل تنظیم هستش. اگه اون رو گسترش بدین، می تونه کاربردهای خیلی بیشتری از میزبانی برنامه های ASP.NET داشته باشه. با گسترش توانمندی های IIS، می تونین یک Windows IIS server پایدار، انعطاف پذیر و موثر رو ایجاد کنین.
+ ادغام با ویژوال استودیو
یکی از مزایای قابل توجه IIS ادغام یکپارچه اون با محیط توسعه مایکروسافت یعنی Visual Studio هستش. این یکپارچه سازی توسعه وب اپلیکیشن ها رو ساده می کنه و به توسعه دهندگان یک تجربه توسعه آشنا و کارآمد رو ارائه میده.
با استفاده از ابزارها و ویژگی های ویژوال استودیو که به طور هماهنگ با IIS کار می کنن، توسعه دهندگان می تونن برنامه های اینترنتی خودشون رو به طور یکپارچه اشکال زدایی و آزمایش کنن، اونها رو استقرار بدن و بهره وری و زمان عرضه به بازار رو کاهش بدن.
+ مقیاس پذیری
با افزایش ترافیک وب سایت ها و برنامه های IIS، مقیاس پذیری اهمیت خیلی زیادی پیدا می کنه. IIS با پشتیبانی از استقرار چندین سرور و اجرای تعادل بار، راه حلی عالی برای افزایش مقیاس به منظور برآورده کردن نیازهای سطح بالا محسوب می شه.
مدیران می تونن درخواست های دریافتی رو در سرورهای مختلف توزیع کنن تا از عملکرد بهینه مطمئن بشن و تعداد زیادی از کاربران همزمان رو به طور موثر مدیریت کنن.
+ بازنویسی URL
قابلیت های بازنویسی URL در Internet Information Services به ادمین ها اجازه میده URLها رو برای بهبود بهینه سازی موتور جستجو (SEO) یا ریدایرکت درخواست ها دستکاری کنن. این ویژگی قدرتمند، صاحبان وب سایت رو قادر می سازه تا URLهای کاربرپسند رو ایجاد کنن، رتبه بندی SEO رو بهبود بدن، ساختار URL رو به طور موثری مدیریت کنن و از تجربه کاربری بهتر و دیده شدن بهتر در موتورهای جستجو مطمئن بشن.
+ فشرده سازی
برای بهینه سازی عملکرد وب سایت و کاهش استفاده از پهنای باند، IIS گزینه فشرده سازی محتوای وب رو قبل از انتقال اون به مشتریان ارائه میده. سرور می تونه با فشرده سازی داده ها، محتوا رو به طور موثری ارائه کنه که منجر به بارگذاری سریع تر و بهبود تجربه کاربر بشه.
این موضوع به ویژه برای کاربرانی که از اتصال اینترنت کندتری استفاده می کنن یا از طریق گوشی های هوشمند به وب سایت ها دسترسی دارن، خیلی مهمه.
+ مدیریت متمرکز
در محیط های سازمانی با چندین وب سایت و برنامه های مبتنی بر وب، مدیریت متمرکز یک ضرورت محسوب می شه. IIS از مدیریت متمرکز پشتیبانی می کنه و به ادمین ها اجازه میده تا از یک مکان واحد به طور موثر روی چندین نمونه از IIS در سرورهای مختلف نظارت و کنترل داشته باشن.
+ حافظه نهان پویا
IIS از قابلیت هایی برای بهینه سازی عملکرد و کاهش بار کاری سرور بهره می بره. محتوایی که معمولا به اون دسترسی پیدا می کنین، در سمت مرورگر ذخیره می شه و به سرور اجازه میده تا به سرعت محتوا رو به درخواست های بعدی ارائه بده، بدون اینکه مجددا اون داده ها رو پردازش کنه.
حافظه پنهان پویا یا Dynamic Caching به طور قابل توجهی زمان پاسخ به کاربران رو بهبود می بخشه و منجر به تجربه نرم تر و پاسخگوتری در استفاده از وب اپلیکیشن ها و وب سایت ها می شه.
+ پشتیبانی از PHP و سایر فناوری ها
در حالی که IIS به طور نیتیو از .NET و ASP.NET پشتیبانی می کنه، به اندازه کافی همه کاره هستش تا فناوری های دیگه مثل PHP و زبان های برنامه نویسی مختلف رو پوشش بده. این انعطاف پذری به توسعه دهندگان اجازه میده تا بهترین فناوری که با نیازهای پروژه شون مطابقت داره رو انتخاب کنن.
چه ساخت وب اپلیکیشن ها با استفاده از فناوری های مایکروسافت باشه و چه استفاده از راه حل های منبع باز محبوبی مثل PHP، سرور IIS زیرساخت ها و سازگاری لازم رو برای تامین نیازهای توسعه متنوع فراهم می کنه.
سرور IIS چطور کار می کنه؟
IIS به عنوان یک وب سرور از یک Process Engine داخلی برخوردار هستش که تمام درخواست های سرویس گیرنده/سرور رو مدیریت می کنه. در اصل، یک کلاینت درخواستی رو به سرور ارسال می کنه که بعد توسط IIS پردازش شده و به مشتری برمی گرده. معماری پردازش Internet Information Services به دو لایه اصلی تقسیم می شه:
1. کرنل مود
در کرنل مود (Kernel Mode)، کد اجرا شده به تمام سخت افزارهای مرتبط دسترسی کامل داره و می تونه هر دستوری رو که میخواد اجرا کنه. کرنل مود بیشتر برای برنامه های قابل اعتماد استفاده می شه. خرابی های کرنل مود برای کل سیستم فاجعه بار محسوب می شه. HTTP.SYS در کرنل مود قرار داره.
2. حالت کاربر
هر کدی که در حالت کاربر (User Mode) اجرا می کنین، فقط دستوراتی رو صادر می کنه که شامل دسترسی به سخت افزار یا حافظه مرجع نباشه. این یک لایه حفاظتی اضافی رو در برابر خطاها ایجاد می کنه و امکان بازیابی سریع تر رو هم فراهم می کنه. وقتی که کد رو در حالت کاربر اجرا می کنین، APIها به اینترفیسی با سخت افزار و حافظه مرجع واگذار می شن.
سرویس مدیریت وب (Web Admin Service)، دایرکتوری مجازی (Virtual Directory) و استخر برنامه (Application Pool) همگی در حالت کاربر قرار گرفتن.
وظیفه کرنل مود اینه که درخواست ها رو از کلاینت ها دریافت کنه و با استفاده از HTTP.SYS اونها رو به یک برنامه کاربردی هدایت کنه. این اتفاق زمانی میفته که مشتری با کلیک کردن یا تایپ کردن URL سایت به دنبال دسترسی به یکی از صفحات سایت هستش. این درخواست ها توسط HTTP.SYS ثبت می شن که در نهایت برای هر استخر برنامه یک صف رو ایجاد می کنه.
همزمان با اجرای Http.Runtime.ProcessRequest، پردازش درخواست شروع می شه. پروسه HttpRuntime مجموعه ای از آبجکت های HttpApplication رو ایجاد می کنه که متعاقبا از طریق HTTP ارسال می شن. ماژول های HTTP تا وقتی که درخواست به کنترل کننده HTTP صفحه ASP.NET برسه، فعال باقی می مونه. بعد از اینکه درخواست از طریق مسیر HTTP جابجا شد، صفحه لود می شه.
Worker Process و Application Pool دو مفهوم مهم در دنیای IIS هستن. استخر برنامه به عنوان یک کانتینر یا نگهدارنده عمل می کنه. استخر برنامه، Worker Process رو در خودش جای داده و چندین برنامه رو از همدیگه جدا می کنه. این موضوع چه در حالتی که برنامه ها بر روی یک سرور واحد و چه در خوشه ای از سرورها میزبانی بشن، صادق هستش.
چندین وب سایت رو می شه در یک استخر برنامه واحد قرار دارد. به بیان دیگه، یک استخر برنامه مجموعه ای از URLهایی هستش که توسط پردازش کارگر (Worker Process) ارائه شده. جداسازی برنامه ها مدیریت رو تسهیل می کنه و تضمین می کنه که اگه یک استخر برنامه با خطا مواجه بشه، بقیه استخرها تحت تاثیر قرار نمی گیرن.
نسخه های موجود از IIS
چندین نسخه از IIS موجود هستش، اما نسخه های قدیمی تر از IIS 6 برای استفاده تجاری مناسب نیستن. بنابراین، در این مقاله فقط در مورد نسخه هایی که بعد از IIS 6 ارائه شدن صحبت می کنیم.
اجازه بدین با IIS 6 یا ویندوز سرور 2003 شروع کنیم؛ قدیمی ترین نسخه ای که قابلیت استفاده تجاری داره. این نسخه پشتیبانی از IPv6 رو اضافه کرد اما از جنبه های دیگه برورزسانی خاصی رو ارائه نکرد. از نظر امکانات، این نسخه از IIS حداقل امکانات مورد نیاز برای عملکرد خوب در یک محیط سازمانی سریع رو ارائه می کنه.
- IIS 7 نسخه بعدی هستش که منتشر شد. این نسخه با ویندوز ویستا سازگاری داره و اقدامات امنیتی و پشتیبانی رو برای چارچوب دات نت (.NET) افزایش داد.
- IIS 7.5 با پشتیبانی از TLS 1.1 و 1.2 در ویندوز 7 در دسترس قرار گرفت.
- IIS 8 یا ویندوز وب سرور 2012، شامل پشتیبانی از SNI هستش. این نسخه همچنین از پشتیبانی عمومی تا سال 2023 برخورداره.
- IIS 8.5 برای ویندوز 8.1 در دسترس هستش و از قابلیت های اضافی برای Login و همین طور ابزار فعالسازی پویای سایت بهره می بره.
- IIS 10 شامل پشتیبانی از HTTP/2 و Windows PowerShell 5.0 هستش.
- IIS 11 که به همراه ویندوز سرور 2017 و بروزرسانی Anniversary در ویندوز 10 ارائه شده.
- IIS 11.5 که در ویندوز سرور 2022 و بروزرسانی May 2020 ویندوز 10 ارائه شده.
نرم افزار مانیتورینگ شبکه بینا
مزایای استفاده از سرور IIS
IIS مزایای کلیدی و مختلفی رو ارائه میده که اون رو به انتخابی محبوب در بین توسعه دهندگان وب و کسب و کارها تبدیل کرده. در ادامه به چند مورد از این مزایا اشاره می کنیم.
– امنیت قوی
IIS از ویژگی های داخلی احراز هویت، مجوز و کنترل دسترسی برخوردار هستش تا امنیت وب اپلیکیشن شما رو تقویت کنه. می تونین حساب های ادمین سیستم و اپلیکیشن رو به صورت جداگانه برای دسترسی های بسیار جزئی ایجاد کنین. سایر ویژگی های امنیتی شامل فیلتر کردن درخواست به ترافیک لیست سفید/سیاه، مسدود کردن IP پویا، رمزگذاری SSL و TLS، فشرده سازی صفحه وب و کنترل های امنیتی خاص FTP می شه.
– استخرهای برنامه
این قابلیت به شما کمک می کنه وب اپلیکیشن های خودتون رو برای امنیت و دسترس پذیری بهتر در IIS جدا کنین. یک استخر برنامه دارای یک یا چند برنامه کاربردی هستش که توسط یک یا چند پردازش کارگر در Internet Information Services مدیریت می شه.
یک پردازش کارگر درخواست های مشتری رو به طور خاص برای یک استخر برنامه مدیریت می کنه. قابلیت جداسازی تضمین می کنه که خرابی یا شکست یک برنامه در یک استخر خاص، روی برنامه های موجود در استخرهای دیگه تاثیر نداره.
– مقیاس پذیری و قابلیت اطمینان
می تونین یک زیرساخت وب مقیاس پذیر و قابل اعتماد رو با IIS Web Farm پیاده سازی کنین. این ویژگی به شما اجازه میده تا وب سایت های پرترافیک رو روی چندین سرور IIS با تعادل بار و مسیریابی درخواست برنامه (ARR) میزبانی کنین.
یک متعادل کننده بار، با استفاده از الگوریتم های پیچیده ترافیک رو بین چندین سرور در IIS Web Farm توزیع می کنه. همزمان، ARR بهترین سرور محتوا رو برای هر درخواست تعیین می کنه. IIS Web Farm همچنین این امکان رو به شما میده تا سرورهایی رو اضافه یا حذف کنین تا به صورت پویا قابلیت مدیریت ترافیک وب سایتتون رو افزایش بدین.
– یکپارچه سازی نیتیو در ویندوز
IIS که توسط مایکروسافت توسعه داده شده، قابلیت ادغام یکپارچه با سیستم عامل ویندوز سرور رو هم فراهم می کنه. این ادغام امکان استفاده کارآمد از منابع و مدیریت آسون رو با استفاده از ابزارهای آشنای سیستم عامل ویندوز مثل Server Manager و سایر ابزارهای مدیریت وب فراهم می کنه.
– عملکرد و مقیاس پذیری
IIS برای رسیدگی به حجم بالای ترافیک وب طراحی شده و می تونه به طور کارآمد چندین درخواست مشتری رو به طور همزمان از طریق معماری چندرشته ای و پردازش های کارگر خودش مدیریت کنه. این قابلیت به IIS اجازه میده تا برای میزبانی ابزارهای وب در مراکز داده و سرویس دهی به پایگاه های کاربر بزرگ انتخابی مناسب باشه.
– معماری ماژولار
طراحی ماژول IIS به مدیران اجازه میده تا در صورت نیاز با اضافه یا حذف کردن ماژول ها ، رفتار وب سرور رو سفارشی کنه. این انعطاف پذیری، تنظیم دقیق عملکرد و قابلیت ها رو براساس الزامات خاص یک برنامه امکان پذیر می کنه.
– پشتیبانی از چندین فناوری وب
IIS از فناوری های مختلف وب مثل PHP، ASP.NET و فایل های HTML استاتیک پشتیبانی می کنه. این سازگاری گسترده به توسعه دهندگان اجازه میده تا مناسب ترین فناوری رو برای برنامه های تحت وب خودشون انتخاب کنن و اونها رو روی یک سرور واحد میزبانی کنن.
– استقرار و مدیریت وب
IIS ابزارهایی مثل Web Deploy رو ارائه میده که به توسعه دهندگان اجازه میده تا برنامه های وب رو به راحتی منتشر کنن و تنظیمات وب سایت رو به طور موثری مدیریت کنن.
– پشتیبانی از دات نت فریم ورک
IIS به طور یکپارچه از برنامه های NET Framework پشتیبانی می کنه. این فریم ورک به طور گسترده برای ساخت برنامه های وب قوی که از نظر ویژگی غنی هستن استفاده می شه.
– رابط کاربری گرافیکی IIS
کنسول مدیریت IIS یک رابط گرافیکی کاربرپسند رو برای پیکربندی و مدیریت وب سرورها و وب سایت ها در دسترس قرار میده که حتی افرادی با تخصص فنی کم هم می تونن از اون استفاده کنن.
کاربردهای وب سرور IIS
همون طور که در این مقاله توضیح دادیم، وب سرور IIS در صورت پیاده سازی درست می تونه برای کاربردهای متنوعی استفاده بشه. اما در ادامه به رایج ترین کاربردهای IIS اشاره می کنیم.
1. میزبانی وب سایت
سرور برنامه IIS می تونه برنامه های تحت وب سازمانی، وب سایت ها و سرویس های WCF رو میزبانی کنه. در واقع، نزدیک به 30 درصد از وب سایت ها بر روی IIS اجرا می شن.
2. گزارش گیری
گزارش های سرور IIS حاوی اطلاعات مهمی درباره سرور و وب سایت شما هستش. این اطلاعات مواردی مثل الگوهای استفاده، مشکلات عملکرد و غیره و شامل می شه. تجزیه و تحلیل این فایل های گزارش به شما کمک می کنه مشکلات رو به سرعت شناسایی و عیب یابی کنین.
3. درخواست فیلتر
سرور مایکروسافت IIS یک ماژول فیلتر درخواست رو برای اسکن و فیلتر کردن درخواست های بالقوه خطرناک مشتری رو در دسترس قرار میده. می تونین قوانین فیلترینگ ترافیک مناسب رو براساس پارامترهایی مثل پسوند فایل ها، طول URL و حداکثر اندازه رشته (String) اعمال کنین.
4. پشتیبانی نیتیو
سرور Internet Information Services به صورت نیتیو از فریم ورک و کتابخونه های مایکروسافت .NET پشتیبانی می کنه و به توسعه دهندگان اجازه میده تا به سرعت برنامه های تحت وب ASP.NET رو در IIS بسازن، مستقر و مدیریت کنن.