فعالسازی HTTPS به کمک Netlify
از امروز این وبسایت علاوه بر HTTP از طریق HTTPS هم در دسترس است. در این مطلب شرح میدهم چطور اینکار را انجام دادم.
قبل از اینکه شیرجه بزنیم داخل راهنما، یک توضیح کوچک راجع به HTTPS بدهم. هر سایت میتواند به صورت HTTP یا HTTPS سرو شود. وقتی اطلاعات با HTTP سرو میشود هر کامپیوتری بین کامپیوتر یا موبایل ما و سایت مقصد هم لینک را میبیند و هم محتوا را، شامل عکس، رمز، متن و مانند اینها. از اینها گذشته میتواند آنرا تغییر بدهد، مثل کاری که چند وقت پیش ایرانسل انجام میداد و در صفحاتی که با HTTP سرو میشدند تبلیغات نمایش میداد. اما اگر وبسایتی با HTTPS سرو بشود محتوا بین کامپیوتر ما و سرور مقصد رمز میشود و قابل فهم نیست. امکان تغییر اطلاعات هم نیست چون مرورگر خطا میدهد. البته مهم است که از مرورگر سالم و دستنخورده استفاده کنیم، چرا که مرورگر لیست گواهینامههایی که میتواند به آنها اعتماد کند در دل خودش دارد. تنها چیزی که کامپیوترهای بین راه در این حالت میبینند نام دامنه است. آنها حتی رشتهای که بعد از نامه دامنه میآیند را نخواهند دید. مثلا با مراجعه به https://mehdix.ir/bookmarker.html سرورهای بین راه فقط https://mehdix.ir را میبینند و باقی غیرقابل فهم است. قبلا در مورد گواهینامه نوشتهام.
وبسایت من استاتیک است یعنی سروری از خودش ندارد و از Github سرو میشود. گیتهاب برای دامینهای شخصی فعالسازی HTTPS را پشتیبانی نمیکند. برای اینکه بدون استفاده از سرور مجزا بتوان HTTPS را فعال کرد تنها یک راه وجود دارد، باید از یک CDN استفاده کرد. CDN اختصار Content Delivery Network است. با بکارگیری CDN وبسایت از طریق شبکه بزرگی از سرورهایی که در قارههای مختلف پراکندهاند سرو میشود. معمولا برای سرو کردن عکسها و فایلهای استاتیک از این تکنیک استفاده میشود، هدف اصلی هم کاهش ترافیک سرور اصلی و افزایش سرعت دسترسی به وبسایت است.
از جایی که CDN مثل یک پراکسی عمل میکند ما میتوانیم به کمک آن HTTPS را برای وبسایتمان فعال کنیم. معروفترین CDNای که اینکار را انجام میدهد CloudFlare است ولی متاسفانه به دامینهای .ir
خدمات نمیدهد. شرکت دیگری که خدمات مشابه و بسیار برنامهنویسپسند! ارائه میدهد نامش Netlify است که یک استارتاپ تازهتاسیس در سانفرانسیسکوست. من با کمک این سرویس HTTPS را برای وبسایتم فعال کردم.
چیزی که باعث حیرت من شد کیفیت بسیار بالا و راحتی بسیار زیاد کار با Netlify بود. از طرفی برای دامینهای ایران هم محدودیت ندارد. (ولی شاید در آینده با گسترش شرکت به فکر محدود کردن بیفتند) به طور خلاصه خدمات زیر را در پلن رایگانشان ارائه میکنند:
- بیلد و دیپلوی کردن ریپازیتوری از روی گیتهاب
- مدیریت دامنه جداگانه برای هر مخزن نرمافزاری (میشود یک وبسایت به هر مخزن منسوب کرد.)
- فعالسازی HTTPS از طریق صدور گواهینامه Let’s Encrypt
- افزایش سرعت لود با استفاده از CDN این شرکت
- بهینهسازی و فشردهسازی فایلهای وبسایت
- مدیریت فرمهای HTML و ارسال محتوا از طریق WebHook
- امکان انجام Split Testing روی ترافیک (گروهی از کاربران دیزاین دیگری میبینند)
- امکان افزودن مدیریت کاربران به سایتهای استاتیک
و البته خیلی امکانات دیگر که در وبسایتشان توضیح دادهاند.
مراحل فعالسازی هم بسیار ساده بود. من ابتدا یک اکانت ساختم و بعد به شکل اتوماتیک مخزن گیتهابی که محتوای سایتم روی آن است را انتخاب کردم. از جایی که خودشان بیلد جکیل را ساپورت میکردند نیازی به افزودن فایل کانفیگ مجزا هم نبود. فقط از جایی که بیلد صحیح سایت من به نسخه جدیدتری از روبی نسبت به نسخه دیفالت بیلدسرور آنها نیاز داشت یک فایل .ruby-version
به مخزن اضافه کردم. از سوی دیگر آدرسهای سرور دامنهای که اختصارا برای هر مخزن تولید میشود را در وبسایت ایرنیک وارد کردم تا دامنه mehdix.ir توسط Netlify هدایت بشود.
در مجموع خیلی راضی هستم و در پروژههای بیشتری از Netlify استفاده خواهم کرد.
من یه دامنه و هاست دارم که به هم متصل بودن، تصورم این بود که میشه مثل CloudFlare این Netlify رو بین این دو قرار بدم، وارد Netlify شدم و دامنم رو به DNS Zone اضافه کردم، چهار تا NameServer داد که دامنم روی اونا تنظیم کردم، بعد تو Netlify اومدم توی قسمت DNS Records دو تا NameServer هاستم رو در قالب NS وارد کردم، الان بعد یه روز دامنم به هاست متصل نمیشه. نمیدونم ایراد کارم کجاست؟
من تا حالا از NS استفاده نکردم. من تنها در رجیستری دامنه خودم آدرس نیمسرورهای نتلیفای رو دادم و در نتلیفای هم دامنهام رو اضافه کردم و کار کرد. عکس تنظیماتش رو اینجا ببین.
نتلیفای سایت دیگهای رو نمیتونه سرو کنه. همه چیز باید رو خودش باشه. مناسب سایتهای استاتیکه.
این قسمت فقط به درد تعریف رکوردهای جدید میخوره. مثلا تعریف زیر دامنه برای ایمیل. نمیتونی هاستت خودت رو اینجا وارد کنی.
کلا نمیتونی از نتلیفای برای اضافه کردن https به سرور یا هاست شخصی خودت استفاده کنی مگر اینکه استاتیک باشه و کاملا از روی نتلیفای سرو بشه. مطلب رو اصلاح میکنم که باعث سردرگمی نشه.
متاسفانه دسترسی به سرویس app در netlify تو ایران بسته شده و بدون فیلترشکن به سایتت دسترسی نداریم.😔
ممنون که اطلاع دادی. البته تا حدودی قابل پیشبینی بود. بهرحال هر چیز بدردبخوری یا از داخل فیلتر میشه یا از خارج. البته من بیخبر از این اوضاع در تدارک مهاجرت به سرور سلفهاست خودم بودم، حالا سریعتر انجامش میدم.