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

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

بخش چهارم: معمای ربات ترب و فایروال سرسخت
در نهایت باید مطمئن میشدیم که رباتها به درستی سایت را خزش میکنند.
متوجه شدیم ربات سایت ترب نمیتواند قیمت محصولات را آپدیت کند.
دلیل این مشکل، فایروال شبکه توزیع محتوا بود که آیپی رباتها را مخرب تشخیص داده و مسدود میکرد.
راهکار عملی: لیست رنج آیپیهای رسمی سرور ترب را پیدا کردیم. این آیپیها را در لیست سفید (Whitelist) فایروال قرار دادیم. با این کار، رباتها بدون مشکل توانستند اطلاعات را بخوانند.
نتیجهگیری: جعبه ابزار نجات سایت
حل این مشکلات زنجیرهای به ما یک درس بزرگ داد.
همیشه باید به دنبال ریشه خطا بود و هیجانی عمل نکرد.
خطای ۵۰۲ ابرآروان را با بررسی پورتها و تنظیمات CDN حل کنید.
بههمریختگی ظاهر سایت را با اصلاح دیتابیس و فایل کانفیگ برطرف کنید.
مشکل خزش رباتها را با بررسی لاگ فایروال و لیست سفید مدیریت کنید.
و در نهایت، هیچ وقت در زمان اختلال اینترنت، پشت سر هم برای گواهی SSL درخواست ندهید.