برگزیده های پرشین تولز

پیام خطا و ارور ۵۰۲ bad gateway در nginx

iServerco

کاربر تازه وارد
تاریخ عضویت
20 آپریل 2016
نوشته‌ها
12
لایک‌ها
1
سن
26
عمولا پیام خطای ۵۰۲ Bad Gateway در nginx بیشتر در موارد استفاده از nginx به عنوان پروکسی کش و Reverse Proxy و سر راه وب سرور آپاچی رخ میدهد که شاید به دلیل استفاده بیشتر وب مستران ایرانی از این تکنیک برای پایین آوردن لود سرور و افزایش سرعت چشمگیر صفحات وب باشد . ارور ۵۰۲ Bad Gateway در nginx به جز حالت اول ، در مواردی که ادمین سرور از nginx به عنوان وب سرور اصلی و با هندلر fastcgi و استفاده میکند نیز رخ میدهد . احتمال بروز این خطای nginx در حالت های دیگر نیز امکان پذیر است ولی ۲ موردی که به آن اشاره کردیم و مخصوصا حالت proxy cache اصلی ترین و شایع ترین موارد استفاده از nginx به خصوص در میان وب مستران ایرانی است .

خطای ۵۰۲ bad gateway در حالت استفاده از nginx به عنوان Reverse Proxy
در این حالت وب سرور آپاچی نقش Gateway را ایفا میکند و Gateway وب سرور Apache است .بنا بر این اگر در این حالت با ارور ۵۰۲ bad gateway مواجه شدید مشکل اصلی از کانفیگ Gateway یا همان وب سرور آپاچی است . راه حل این مشکل را معمولا باید در لاگ های مربوط به ارور های آپاچی جستجو کنید .

خطای ۵۰۲ bad gateway در حالت استفاده از nginx به عنوان وب سرور
در این وضعیت اگر با خطای ۵۰۲ bad gateway در nginx مواجه شدید اصلی ترین احتمال مربوط به تنظیمات هندلر php که معمولا fastcgi است می باشد . در این صورت لاگ های مربوط به php و php-fpm را بررسی کنید . بهتر از ابتدا لاگ های مربوط به nginx و php-fpm را پاک کنید و سپس با دستور service nginx restart و service php-fpm restart مجددا لاگ ها رو ایجاد کرده و ارور ها رو مانیتور کنید .

راه حل های برطرف کردن مشکل ارور و پیام خطای ۵۰۲ bad gateway در nginx
۱٫افزایش میزان buffer و timeout داخل بلاک http در فایل کانفیگ nginx

توجه داشته باشید که این راه حل معمولا در ۸۰% مواقع جوابگو است .برای افزایش مقادیر buffer و timeout فایل کانفیگ nginx را ویرایش کرده و مقادیر زیر را در بلاک http اضافه کنید و در نهایت سرویس های cgi/php-fpm و nginx را ریستارت کنید :

http {

fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

}

۲٫اطمینان حاصل کنید php-fpm به آدرسی که شما در کانفیگ nginx ست کرده اید گوش میکند
این آدرس میتواند به یکی از دو eزیرا باشد و در فایل www.conf مربوط به php-fpm و در مسیر /etc/php-fpm.d/www.conf قرار دارد :

listen = /var/run/php5-fpm.sock

یا

listen = 127.0.0.1:9000

بعد از اتمام ویرایش و حصول اطمینان از کانفیگ صحیح و مقادیر داده شده سرویس های php-fpm و nginx را ریستارت کنید

۳٫غیر فعال کردن سیستم کش به خصوص APC Cache
اگر از کش استفاده میکنید و با پیام خطای nginx ۵۰۲ bad gateway مواجه میشوید به شما توصیه میکنید ابتدا کش مربوطه رو غیر فعال کنید . بد نام ترین کشینگ در این مورد ، APC Cache است . ولی سایر کش ها مانند Xcache و حتی Memcache نیز میتوانند باعث بروز این اختلال شوند . در این صورت باید مشکل را در نوع کانفیگ کش و همچنین اسکریپت استفاده شده جستجو کنید . در Opcode Cache ها اگر با APC به مشکل غیر قابل حل برخورد کردید میتوانید Xcache یا Eaccelerator را جایگزین کنید . معمولا Optmizer ها در کش های PHP یکی از عوامل بروز این ارور در nginx هستند

منبع : ای سرور

 
بالا