گاهی اوقات تلاش برای حل کردن یک مشکل کوچک، باعث یک فاجعه بزرگتر در سرور میشود! مدیریت سایت همیشه پر از چالشهای عجیب است و یک اشتباه کوچک در کانفیگ سرور میتواند یک واکنش زنجیرهای و خطرناک ایجاد کند. اگر شما هم با این بحران مواجه شدهاید، در این آموزش حل خطای ۵۰۲ ابرآروان و قطعی SSL قدمبهقدم همراه ما باشید تا یک تجربه واقعی را کالبدشکافی کنیم.
ماجرا از آنجا شروع شد که متوجه شدیم رباتهای سایت ترب خطای ۴۰۳ دریافت میکنند و قیمت محصولات سایت وردپرس یکی از مشتریهای ما آپدیت نمیشود. برای رفع این مشکل، تصمیم گرفتیم رولهای فایروال سرور را بازبینی کنیم و آیپیهای ترب را در لیست سفید (Whitelist) قرار دهیم. اما در میان تغییرات فایروال، یک اشتباه کوچک اما مهلک رخ داد: پورت ۴۴۳ سرور ناخواسته بسته شد! این اشتباه شروع یک دومینوی وحشتناک بود که به قطعی کامل سایت و خطای ۵۰۲ ختم شد. در این مقاله داستان این بحران و راهکارهای قدمبهقدم برای نجات سایت را بررسی میکنیم.
بخش اول: دشمن پنهان، خطای ۵۰۲ ابرآروان و پورت بسته
خطای ۵۰۲ (Bad Gateway) در شبکه توزیع محتوا (CDN) به این معنی است که ابرآروان نمیتواند با سرور اصلی شما ارتباط برقرار کند.
در پروژه ما، تنظیمات ابرآروان روی حالت Full SSL (ارتباط امن کامل) قرار داشت. این یعنی ابرآروان موظف بود ترافیک را فقط از طریق پورت امن ۴۴۳ به سرور بفرستد. از آنجا که ما ناخواسته این پورت را در فایروال بسته بودیم، ارتباط CDN با سرور کاملاً قطع شد و سایت ارور ۵۰۲ داد. بسیاری میپرسند آیا پورت ۴۴۳ حتماً باید باز باشد؟ پاسخ قاطع این است: بله! پورت ۴۴۳ شاهرگ ارتباط امن (HTTPS) است و مسدود بودن آن باعث قطعی SSL و از دسترس خارج شدن سایت میشود.
راهکار عملی موقت: برای اینکه سایت سریعاً بالا بیاید، وارد پنل ابرآروان شدیم. در بخش تنظیمات HTTPS، ارتباط را از حالت Full SSL روی HTTP قرار دادیم. با این کار، تضاد برطرف شد و سرور دوباره نفس کشید (هرچند به صورت ناامن).

بخش دوم: نبرد با تحریمها برای نصب گواهی SSL
وقتی متوجه مشکل ارتباطی شدیم، خواستیم گواهی رایگان Let’s Encrypt را روی سرور تمدید و نصب کنیم. اما اینترنتِ سرور دچار اختلال بود و ابزار Curl برای برقراری ارتباط با خطا مواجه میشد.
تلاشهای مکرر و هیجانی ما باعث شد محدودیت درخواست این سرویس (Rate Limit) فعال شود و موقتاً مسدود شویم.
راهکار عملی: در زمان اختلال شبکه، هرگز پشت سر هم درخواست جدید برای گواهی نفرستید. در این شرایط یا باید صبر کنید تا زمان محدودیت تمام شود، یا به عنوان یک روش جایگزین حرفهای، از اعتبارسنجی نوع DNS (DNS Challenge) استفاده کنید.
بخش سوم: زخم کاری HTTPS و مشکل Mixed Content
با تغییر تنظیمات ابرآروان به HTTP، سایت بالا آمد اما ظاهر آن کاملاً بههمریخته و فاقد استایل بود. مرورگرها فایلهای CSS و تصاویر را مسدود میکردند چون روی بستر ناامن (HTTP) لود میشدند. به این مشکل در اصطلاح فنی Mixed Content میگویند.
راهکار عملی: ابتدا وارد دیتابیس (phpMyAdmin) شدیم و آدرسهای سایت (Site URL و Home URL) را با https:// تنظیم کردیم. سپس وارد فایل منیجر هاست شدیم و فایل wp-config.php را باز کردیم. تکه کد زیر را در ابتدای آن قرار دادیم. با این کد، وردپرس مجبور شد تمام فایلها را در بستر امن لود کند و ظاهر سایت به حالت عادی و مرتب برگشت:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
}

بخش چهارم: حل ریشهای پورت ۴۴۳ و ربات ترب
حالا که سایت موقتاً پایدار شده بود، باید مشکل را از ریشه حل میکردیم. ابتدا وارد تنظیمات فایروال سرور شدیم و پورت ۴۴۳ را مجدداً و برای همیشه باز کردیم تا ارتباط Full SSL دوباره برقرار شود. سپس به سراغ مشکل اولیه (آپدیت نشدن قیمتها در ترب) رفتیم. متوجه شدیم مشکل اصلی از فایروال سرور نبوده، بلکه فایروال شبکه توزیع محتوا (WAF ابرآروان) آیپی رباتها را مخرب تشخیص میداده است.
راهکار عملی نهایی: لیست رنج آیپیهای رسمی سرور ترب را پیدا کردیم. وارد پنل ابرآروان شدیم و این آیپیها را در بخش فایروال (WAF) در لیست سفید (Whitelist) قرار دادیم. با این کار، رباتها بدون برخورد با سپر امنیتی CDN توانستند اطلاعات را بخوانند و بهروزرسانی کنند.
نتیجهگیری: جعبه ابزار نجات سایت
حل این مشکلات زنجیرهای به ما یک درس بزرگ داد: در مدیریت سرور همیشه باید به دنبال ریشه خطا بود و هیجانی عمل نکرد.
و در نهایت، در زمان قطعی ارتباط سرور، با درخواستهای مکرر گواهی SSL، خودتان را لیمیت نکنید!
خطای ۵۰۲ ابرآروان را با بررسی باز بودن پورت ۴۴۳ و تطبیق تنظیمات CDN حل کنید.
بههمریختگی ظاهر سایت (Mixed Content) را با اصلاح دیتابیس و فایل کانفیگ برطرف کنید.
مشکل خزش رباتها (مثل ترب یا گوگل) را با بررسی لاگ فایروالِ کلاد و افزودن به لیست سفید مدیریت کنید.