اگر جزو وب مستران طرفدار وب سرور ‌nginx هستید احتمالا باید بار ها و بار ها در شرایط گوناگون با این پیغام و پیام خطا و ارور معروف و اعصاب خورد کن در nginx آشنا باشید : 5۰2 Bad Gateway

این مشکل معمولا در هنگام استفاده از پلاگین های Reverse Proxy Cache و همچنین کنترل پنل هایی که از وب سرور nginx به صورت ناقص پشتیبانی میکنند بیشتر مشاهده میشود . معمولا چند دلیل رایج و معمول برای بروز خطا و ارور 5۰2 Bad Gateway در وب سرور nginx وجود دارد که در ادمه بحث به آن ها اشاره میکنیم . قبل از هر چیز باید نوع استفاده از Nginx مشخص شود .

 

پیام خطا و ارور 5۰2 bad gateway در nginx

معمولا پیام خطای 5۰2 Bad Gateway در nginx بیشتر در موارد استفاده از nginx به عنوان پروکسی کش و Reverse Proxy و سر راه وب سرور آپاچی رخ میدهد که شاید به دلیل استفاده بیشتر وب مستران ایرانی از این تکنیک برای پایین آوردن لود سرور و افزایش سرعت چشمگیر صفحات وب باشد . ارور 5۰2 Bad Gateway در nginx به جز حالت اول ، در مواردی که ادمین سرور از nginx به عنوان وب سرور اصلی و با هندلر fastcgi و  استفاده میکند نیز رخ میدهد . احتمال بروز این خطای nginx  در حالت های دیگر نیز امکان پذیر است ولی 2 موردی که به آن اشاره کردیم و مخصوصا حالت proxy cache اصلی ترین و شایع ترین موارد استفاده از nginx به خصوص در میان وب مستران ایرانی است .

خطای 5۰2 bad gateway در حالت استفاده از nginx به عنوان Reverse Proxy

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

خطای 5۰2 bad gateway در حالت استفاده از nginx به عنوان وب سرور

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

راه حل های برطرف کردن مشکل ارور و پیام خطای 5۰2 bad gateway در nginx

1٫افزایش میزان buffer و timeout داخل بلاک http در فایل کانفیگ nginx

توجه داشته باشید که این راه حل معمولا در 8۰% مواقع جوابگو است .برای افزایش مقادیر 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;

}

2٫اطمینان حاصل کنید php-fpm به آدرسی که شما در کانفیگ nginx ست کرده اید گوش میکند

این آدرس میتواند به یکی از دو صورت زیرا باشد و در فایل 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 را ریستارت کنید

3٫غیر فعال کردن سیستم کش به خصوص APC Cache

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

. در صورت بروز هر گونه مشکل در کانفیگ nginx یا نیاز به کانفیگ حرفه ای وب سرور nginx میتوانید از منوی تماس با ما در ناو بار سایت با ما ارتباط برقرار کنید و درخواست کانفیگ وب سرور nginx خود را به ما اعلام کنید . ما وب سرور nginx شما را به بهترین نحو ممکن tune و کانفیگ خواهیم کرد .

4٫ استفاده از کنترل دایرکت ادمین 
درصورتی که از کنترل پنل دایرکت ادمین استفاده می کنید و نصب شما بصورت  nginx + php-fpm بوده است  می بایست در فایل /etc/sysctl.conf  تغییرات زیر را بدهید :

در
FreeBSD

kern.ipc.somaxconn=4096

در Debian/CentOS

net.core.somaxconn=4096

این صفحه چطور بود؟ post