درک و رفع ارور 502 bad gateway — راهنمای گامبهگام
درک و رفع ارور 502 bad gateway: راهنمای کامل عملی
وقوع ارور 502 bad gateway نشاندهندهٔ مشکل در تعامل میان اجزای زنجیرهٔ پردازش درخواست است. این خطا وقتی رخ میدهد که یک سرور میانجی (پراکسی، گیتوی یا لود بالانسر) نتواند از سرور مقصد پاسخ معتبر یا بهموقع دریافت کند. هدف این مقاله ارائهٔ روشهای تشخیصی، مجموعه دستورات عملی، الگوهای پیکربندی قابلاستفاده و نکات پیشگیری است تا تیمهای فنی و کاربران نهایی بتوانند مشکل را سریعتر شناسایی و رفع کنند.
مقدمه: چرا ارور 502 bad gateway رخ میدهد؟
ارور 502 معمولاً بهخاطر اشکال در یکی از نقاط زیر ایجاد میشود: ارتباط شبکه، پیکربندی پراکسی یا لودبالانسر، مشکل در اپلیکیشن بکاند یا محدودیتهای سیستمی مانند مصرف منابع. عامل مشترک این خطا این است که میانجی درخواست، پاسخ معتبری از سرور مقصد دریافت نکرده است. تشخیص سریع و سیستماتیک مهمتر از حدس زدن علت است؛ بنابراین ابتدا ثبت لاگها و بررسی مسیر درخواست را انجام دهید و سپس وارد تنظیمات و رفع علت شوید.
عوامل شایع ایجاد ارور
علل متداول عبارتاند از:
- اختلال شبکه یا packet loss بین میانجی و سرور مقصد.
- بار بیش از حد روی سرور مقصد (مصرف CPU، حافظه یا I/O بالا).
- پیکربندی timeout یا upstream نادرست در پراکسی/گیتوی.
- کرش یا خطا در فرآیندهای اپلیکیشن یا اختلال در اتصال به پایگاهداده.
- قوانین فایروال یا سیستمهای کنترل ترافیک که بستهها را مسدود میکنند.
- ناسازگاری نسخههای میانافزار یا بهروزرسانی ناقص.
تشخیص سریع: مراحل اولیه برای کاربر و تیم فنی
برای کاهش زمان ازدسترفتن سرویس، اقدامات تفکیکشده برای کاربران و تیم فنی را همزمان انجام دهید.
اقدامات پیشنهادی برای کاربران
- صفحه را ریفرش کنید و کش مرورگر را پاک کنید؛ برخی خطاها موقتی یا ناشی از کش نادرستاند.
- سایت را در حالت ناشناس یا با مرورگر دیگر باز کنید تا افزونهها یا کش محلی کنار گذاشته شوند.
- اتصال شبکه را بررسی کنید: تغییر به شبکهٔ دیگر (مثلاً دیتای همراه) میتواند محل مشکل را مشخص کند.
- زمان، صفحه و پیام خطا را یادداشت کنید و در صورت نیاز به پشتیبانی ارسال کنید.
اقدامات اولیه برای مدیران و تیم فنی
- لاگهای پراکسی/گیتوی و لاگهای بکاند را همزمان بررسی کنید تا همخوانی خطاها مشخص شود.
- وضعیت منابع سرورها (CPU، حافظه، I/O، کانکشنهای باز) را کنترل کنید.
- تست اتصال مستقیم به بکاند را بدون عبور از پراکسی انجام دهید و پاسخ را مقایسه کنید.
- تنظیمات timeout و health check را بازبینی کنید و تغییرات اخیر در پیکربندی را بررسی نمایید.
هنگام مواجهه با ارور 502 bad gateway چه باید کرد؟
در ادامه گامهای دقیقتری برای عیبیابی ارائه شده است که به ترتیب اجرا کنید تا سریعتر به علت ریشهای برسید.
گامهای عملی و دستورات مفید
- ثبت وقایع شامل: زمان دقیق، مسیر درخواست، آدرسهای IP و هدرهای HTTP درخواست و پاسخ.
- بررسی مسیر شبکه با ابزارهای پینگ و traceroute:
ping -c 5 <آدرس-سرور> traceroute <آدرس-سرور>
این عملیات نشان میدهد آیا تاخیر یا قطعی در مسیر وجود دارد یا خیر. - درخواست مستقیم به بکاند با curl برای مشاهده هدرها و بدنهٔ پاسخ:
curl -I -v --max-time 10 https://backend.local/path
پارامتر --max-time زمان حداکثر انتظار را تعیین میکند. خروجی هدرها میتواند دلیل 502 را مشخص کند (مثلاً connection reset یا EOF). - بررسی لاگ پراکسی برای پیامهایی مانند timeout، connection refused یا upstream prematurely closed connection.
- اجرای تست عملکرد محلی و تست بار کنترلشده اگر استفادهٔ منابع بالا مشاهده شد.
- اگر درخواست مستقیم به بکاند موفق است اما از پشت پراکسی 502 میآیند، روی پیکربندی upstream، health checks و محدودیتهای کانکشن پراکسی تمرکز کنید.
نمونهای از لاگ و تفسیر
[date] error: upstream prematurely closed connection while reading response header [date] info: client 10.0.0.1 request "/api/data" upstream: "http://10.0.0.2:8080/"
تفسیر: پیام «upstream prematurely closed connection» معمولاً به قطع ناگهانی کانکشن از سمت بکاند اشاره دارد؛ باید لاگهای اپلیکیشن بکاند را برای یافتن خطا یا استثنا بررسی کنید.
نمونهٔ پیکربندی timeout در پراکسی
# نمونهٔ عمومی برای پراکسی proxy_connect_timeout 60s; proxy_read_timeout 120s; proxy_send_timeout 60s;
افزایش موقت timeoutها ممکن است مشکل را تسکین دهد اما نباید جایگزین رفع علت اصلی شود؛ پس از حل ریشهای مقادیر را به حد معقول بازگردانید.
چکلیست سریع برای رفع
- آیا لاگهای پراکسی و بکاند خطا یا استثنایی نشان میدهند؟
- آیا درخواست مستقیم به بکاند جواب میدهد؟
- آیا مصرف منابع در سرورهای مرتبط بالا است؟
- آیا تغییر پیکربندی یا بهروزرسانی اخیر انجام شده است؟
- آیا health check های upstream صحیح پیکربندی شدهاند؟
جدول خلاصه: علت و راهحلهای پیشنهادی
| علت محتمل | نشانهها | اقدام پیشنهادی |
|---|---|---|
| قطع ارتباط شبکه | timeout یا packet loss در مسیر | ping/traceroute، بررسی روترها و تماس با ارائهدهندهٔ شبکه |
| بارگذاری بیش از حد سرور | مصرف بالای CPU، صفهای I/O، تاخیر در پاسخ | افزایش منابع، مقیاسپذیری افقی، استفاده از کش |
| پیکربندی نادرست پراکسی | 502 تنها هنگام عبور از پراکسی نشان داده میشود | بازنگری upstream، timeout و health checks |
| خطای نرمافزاری در اپلیکیشن | استثناها و کرش در لاگهای اپلیکیشن | رفع باگ، انتشار نسخهٔ اصلاحشده و تست) |
مثال عملی: گامبهگام رفع یک مورد 502
مثال فرضی: سامانهای پشت یک پراکسی معکوس پیام 502 بازمیگرداند. روند پیشنهادی:
- ثبت جزئیات خطا: زمان، مسیر درخواست و هدرها.
- بررسی لاگ پراکسی برای یافتن کد وضعیت دریافتی از بکاند و پیامهای مرتبط (مثلاً connection reset).
- اجرای curl مستقیم به بکاند و مقایسه هدرها و زمان پاسخ:
- اگر بکاند پاسخ نداد، بررسی سرویسها، اتصال به پایگاهداده و صفها (queue) را انجام دهید.
- در صورت پاسخدهی بکاند اما خطای 502 از پراکسی، پیکربندی upstream و health checkها را اصلاح کنید و محدودیت کانکشنها را افزایش دهید.
- پس از رفع، تست بار و مانیتورینگ برای اطمینان از پایداری اجرا کنید و هشدارهای مناسب تعریف نمایید.
curl -i --max-time 10 https://backend.local/api/health
نکات پیشگیری و بهینهسازی
- استقرار سیستم مانیتورینگ و تعریف آلارم برای زمان پاسخ، نرخ خطا و مصرف منابع (مِتریکها).
- بهکارگیری کش در لایههای قابل اعتماد تا بار روی سرویسهای حساس کاهش یابد.
- پیکربندی معقول retry و timeout؛ مثلا retry با backoff نمایی برای درخواستهای غیرحساس.
- اجرای تست بار و استرس پیش از اعمال تغییرات تولیدی بزرگ و حفظ محیط آزمایشی نزدیک به تولید.
- مستندسازی تغییرات پیکربندی و فرآیندهای rollout/rollback برای کاهش اشتباهات انسانی.
ابزارها و منابع مفید
برای مرجع کدهای وضعیت HTTP و شرح 502 میتوانید این صفحه را مشاهده کنید:
همچنین استفاده از ابزارهای مانیتورینگ و لاگ مرکزی مانند سیستمهایی که métrics و لاگها را یکجا گردآوری میکنند، زمان تشخیص را کاهش میدهد.
سؤالهای متداول (FAQ)
آیا ارور 502 همواره از سمت سرور میزبان است؟
خیر؛ این خطا نمایانگر مشکل در مسیر ارتباط است و منشأ میتواند پراکسی، سرور مقصد یا شبکه بین آنها باشد. بررسی لاگها در هر دو سمت و تست مستقیم ضروری است.
آیا ریفرش صفحه همیشه کافی است؟
برای کاربران گاهی ریفرش کافی است، بهخصوص اگر مشکل گذرا یا ناشی از بار کوتاهمدت باشد. اما برای اطمینان از رفع ریشهای، تیم فنی باید علت اصلی را شناسایی کند.
چه زمانی باید timeout را افزایش دهم؟
افزایش timeout بهعنوان راهکار موقت وقتی مناسب است که بکاند شناختهشده زمان پاسخ طولانی دارد یا در تستها نشان داده شده است که زمان پاسخ نزدیک به حد timeout است؛ اما افزایش طولانیمدت بدون حل علت اصلی میتواند مشکلات را پنهان کند.
چطور از تکرار این خطا جلوگیری کنم؟
با اجرای مانیتورینگ پویا، تعریف هشدارها، پیادهسازی کش و مقیاسپذیری مناسب، اجرای تست بار منظم و مستندسازی تغییرات میتوان احتمال بروز مجدد را کاهش داد.
جمعبندی
در پایان، ارور 502 bad gateway نمایانگر اختلال در تعامل میان اجزای مسیر درخواست است و نه همیشه نشانهٔ خطای یک نقطهٔ مشخص. تشخیص دقیق با ثبت لاگها، تست مستقیم سرور مقصد، بررسی سلامت سرویسها و مانیتورینگ منابع ممکن میشود. برای کاهش وقوع این خطاها از استراتژیهایی مانند تنظیم مناسب timeout، پیادهسازی کش، مقیاسپذیری و مستندسازی استفاده کنید. اجرای روندهای گامبهگام و نگهداری مستندات باعث بازگردانی سریعتر سرویس و جلوگیری از تکرار خطا خواهد شد.