هیچی بدتر از این نیست که وارد سایت وردپرسی خودتون بشین و یه صفحه سفید خطا ببینین! بعضی از این خطاها رو قبلاً راجع بهشون صحبت کردیم؛ مثل خطای صفحه سفید مرگ، خطای ۵۰۲، خطای ۵۰۳ و خیلی از خطاهای رایج دیگه. اما امروز میخوایم در مورد رفع خطای ۵۰۴ یا رفع ارور Gateway Timeout صحبت کنیم. بهتره توصیه‌های مربوط به این خطا و نحوه برطرف کردنش در سایت وردپرسی رو یاد بگیرین.

برای شروع بهتره ببینیم اصلاً این خطا چیه و چطوری به وجود میاد:

خطای ۵۰۴ یا خطای Gateway Timeout چیست؟

قبل از این که بخواین در مورد رفع ارور Gateway Timeout بدونین، بهتره یاد بگیرین که این خطا چیه و چطوری به وجود میاد.

هر وقت مرورگر خودتون رو باز میکنین و وارد یه سایت میشین، یه درخواستی به سرور وب میزبان اون سایت ارسال میشه. سپس سرور وب درخواست رو پردازش میکنه و منابع درخواست شده رو به همراه HTTP Header ارسال میکنه که شامل تعداد زیادی از کدهای موقعیتی HTTP است و نشون میدن که همه چیز اوکیه یا نه!

البته باید بدونین که همه کدهای موقعیتی HTTP بد نیستن؛ مثلاً کد موقعیتی ۲۰۰ نشون میده که همه چی اوکیه!

انواع مختلفی از کدهای موقعیتی ۵۰۰ وجود داره (۵۰۰، ۵۰۱، ۵۰۲،۵۰۳، ۵۰۴، ۵۲۰ و غیره) که هر کدوم یه معنی خاصی دارن. این کدها نشون میدن که درخواست شما ارسال و قبول شده ولی سرور از اجرای اون درخواست جلوگیری کرده!

در این حالت یه خطای ۵۰۴ Gateway Timeout برای شما ظاهر میشه و به این معنیه که سروری که به عنوان یه دروازه عمل میکنه، منتظر پاسخ از یه سرور دیگه است یعنی در واقع دو تا سرور در این خطا دخیل هستن که یکی از اونها منتظر جواب یه سرور دیگه است.

رفع خطای 504

انواع خطای ۵۰۴

با توجه به مرورگرهای مختلف، سیستم عامل ها و سرورها یه خطای ۵۰۴ میتونه خودش رو تو اشکال مختلفی نشون بده که البته همه اونها یه معنای یکسان دارن و نحوه رفع خطای ۵۰۴ در اونها مشابهه. ما در قسمت زیر یه چندتا مدل‌های این ارور رو برای شما آوردیم:

  • “۵۰۴ Gateway Timeout”
  • “۵۰۴ Gateway Timeout NGINX”
  • “NGINX 504 Gateway Timeout”
  • “Gateway Timeout Error”
  • “Error 504”
  • “HTTP Error 504”
  • “HTTP Error 504 – Gateway Timeout”
  • “HTTP 504”
  • “۵۰۴ Error”
  • “(Gateway Timeout (504″
  • “This page isn’t working – Domain took too long to respond”
  • “۵۰۴ Gateway Time-out – The server didn’t respond in time”
  • A blank white screen

حتی بعضی از سایت برای این خطا یه صفحه سفارشی هم میسازن.

انواع خطای 504

ارور ۵۰۴ و سئو

برخلاف خطای ۵۰۳ که به گوگل میگه بعداً برای بررسی برگرد، ارور ۵۰۴ در صورت رفع نشدن میتونه تاثیر منفی روی سئو بذاره. پس حالا متوجه میشین که رفع خطای ۵۰۴ چقد مهم و حیاتیه! اگه سایت شما فقط ۱۰ دقیقه داون بشه و همون موقع گوگل خزنده هاش رو بفرسته سراغ شما، ممکنه گوگل سایت رو به راحتی از کش دریافت کنه که خب تو همچین حالتی اوضاع خوبه! اما اگه سایت شما برای مدت زمان بیشتری داون باشه، مثلاً بیشتر از شش ساعت، ممکنه گوگل خطای ۵۰۴ رو به عنوان یه مسئله در سطح سایت ببینه که قطعاً روی رتبه بندی شما تاثیر منفی داره.

اگه نگران تکرار این خطا و تاثیر منفی که روی سئو و رتبه بندی سایت دارن، هستین بهتره با ما همراه باشبن تا راه‌های رفع ارور Gateway Timeout رو یاد بگیرین و خیال خودتون رو راحت کنین.

نحوه رفع خطای ۵۰۴

به نظرتون در صورت مشاهده خطای Gateway Timeout در سایت وردپرس بهتره عیب یابی رو از کجا شروع کنیم؟ بدون داشتن اطلاعات کافی این کار میتونه سخت و ناامید کننده باشه.

به طور معمول این موارد مربوط به اتصال به شبکه و یا وجود یه مشکل در سروری است که میزبان سایت است. اما با این وجود احتمالش هست که یه خطای از سمت کاربر یا حتی نتیجه یه افزونه شخص ثالث باشه.

بنابراین ما باید در این روش‌هایی که برای رفع ارور ۵۰۴ ارائه میدیم، به همه این نکات دقت داشته باشیم.

۱. بارگیری مجدد صفحه

یکی از ساده‌ترین و اولین مواردی که هنگام مواجه با خطای Gateway Timeout باید امتحان کنین اینه که فقط یه دقیقه صبر کنین و صفحه رو یه بار دیگه بارگیری کنین تا سایت به حالت عادی خودش برگرده (Ctrl+F5).

ممکنه سرور یا میزبان به راحتی بارگیری بشه و در حالی که منتظر هستین، میتونین به سرعت مرورگر دیگه‌ای رو هم امتحان کنین!

یه کار دیگه که میتونین برای رفع خطای ۵۰۴ انجام بدین اینه که سایت رو در downforeveryoneorjustme.com قرار بدین. این وبسایت بهتون میگه که آیا سایت شما داون شده یا یه مشکلی از طرف مرورگر و یا همون کاربر به وجود اومده. ابزاری مانند این، کد موقعیتی HTTP که از سرور برگردونده میشه رو بررسی میکنه. اگه چیزی جز کد ۲۰۰، که به معنی همه چیز اوکیه، باشه یعنی سایت داون شده و باید دنبال رفع مشکل ۵۰۴ باشین.

بارگیری مجدد

۲. غیرفعال کردن تنظیمات پروکسی

در صورت استفاده از سرویس پروکسی، گاهی اوقات ممکنه خطای ۵۰۴ رو مشاهده کنین. این اتفاق معمولاً خیلی نادره خصوصاً از سمت کاربر. با این حال ممکنه تنظیماتی وجود داشته باشه که شما راجع به اون چیزی ندونین و غیر فعال کردنش باعث رفع خطای ۵۰۴ بشه.

رفع خطای 504

۳. مسائل مربوط به DNS

مورد بعدی که میتونه باعث به وجود اومدن خطای Gateway Timeout بشه، مسائل مربوط به DNS سمت مشتری است. این اتفاق میتونه در دو طرف بیفته، اولین سمتش، سمت سرور است مثل همین موردی که دامنه نمیتونه با IP درست مپ بشه! اگه به تازگی سایت وردپرس خودتون رو به یه هاست جدید منتقل کردین مهمه که منتظر انتشار همه چیز باشین که این انتشار در بعضی موارد تا ۲۴ ساعت طول میکشه. این امر به مقدار TTL سوابق DNS شما بستگی داره. میتونین از یه ابزار رایگان مثل DNSMap برای بررسی این که آیا DNS شما در سراسر جهان پخش شده یا خیر، بررسی کنین.

DNSMap

مورد دوم مسئله DNS سمت کاربره که در این حالت میتونین وارد کش محلی DNS بشین و سعی کنین اون رو پاک کنین (پاک کردنش دقیقاً مثل پاک کردن کش مرورگر است).

در ویندوز هم میشه به راحتی Command Prompt رو باز کنین و موارد زیر رو وارد کنین:

ipconfig/flushdns

رفع خطای 504

وقتی که کش رو پاک کردین باید این پیام رو ببینین “Successfully Flushed the DNS Resolve Cache“.

کاربران macOS هم میتونن لاین زیر رو وارد کنن فقط بعد از اتمام کار دیگه پیامی برای اونها ارسال نمیشه:

dscacheutil-flushcache

و در آخر این که میتونین سرورهای DNS سمت کاربر رو به طور موقت تغیر بدین. این سرویس‌ها بای دیفالت توسط ISP شما اختصاصی میشن. اما میتونین سعی کنین این موارد رو به یه سرور DNS عمومی مثل گوگل تغییر بدین و با این کار باعث رفع مشکل ۵۰۴ بشین.

۴. غیر فعال کردن موقتی CDN

یکی از مواردی که میتونه باعث خطای ۵۰۴ بشه، شبکه تحویل محتوا یا CDN است. اگه شما از یه ارائه دهنده CDN شخص ثالث استفاده میکنین، یه راه آسون برای رفع خطای Gateway Timeout ، غیر فعال کردن موقتی CDN است. به عنوان مثال افزونه CDN Enabler یه پلاگین خوب برای امتحان کردن سایت شماست. اگه نمیتونین به داشبورد سایت خودتون دسنرسی داشته باشین به سادگی از طریق SFTP وارد سایت خودتون بشین و پوشه افزونه رو به cdn-enabler_old تغییر نام بدین.

با این روش اتصال CDN به طور موقت غیرفعال میشه. البته یادتون باشه که WP Rocket و هر افزونه دیگه‌ای که به CDN متصل بوده هم غیرفعال میشه.

CDN

این مسئله ممکنه گاهی اوقات با سرویس‌های پراکسی مثل Cloudflare یا Sucuri نیز رخ بده، زیرا بین اونها یه سری فایروال اضافی وجود داره. خیلی از اونها هم در هنگام برگشتن توسط سرور مبدا شما، کد موقعیتی ۵۰۰ رو کش میکنن. ما متوجه شدیم که این اتفاق یه بار در برنامه Cloudflare رخ میده و متاسفانه چون این یه سرویس کاملاً پروکسی است، هیچ راه سریعی برای غیرفعال کردن اون وجود نداره.

۵. مشکلات مربوط به سرور

مسئله سرور یکی از رایج‌ترین دلایلی برای خطای ۵۰۴ است که کاربران باهاش مواجه میشن. در این صورت شما باید سرور خودتون رو با ابزارهایی مثل CMS چک کنین تا از دلیل خطا مطمئن بشین.

  • خطای ۵۰۴ بیشتر در سایت های پر ترافیک و تجاری مثل WooCommerce اتفاق میفته که درخواست‌های غیرقابل انکار زیادی دارن و همین درخواست‌ها خیلی اوقات میتونن باعث اضافه بار سرور بشن. با این حال ما این خطاها رو در انواع سایت ها و وبلاگ‌ها مشاهده میکنیم. این اتفاق مخصوصاً وقتی پیش میاد که شما یه هاست اشتراکی دارین و منابع شما با بقیه سایت ها مشترکه! پس بهتره برای رفع خطای ۵۰۴ در همچین مواردی، هاست خودتون رو ارتقا بدین!
  • کند بودن سرور یکی دیگه از علت‌های به وجود اومدن خطای ۵۰۴ است، یعنی پاسخ دادن به درخواست شما خیلی آهسته صورت میگیره.
  • تعداد PHP Worker علت دیگه‌ایه که میتونیم بهش اشاره کنیم؛ این دستیاران باعث میشن تا کدها روی وردپرس اجرا بشن. وقتی PHP Worker سرشون شلوغ میشه یه صفی تشکیل میدن. حالا اگه این صف طولانی بشه، درخواست‌های قدیمی‌تر نادیده گرفته میشن پس هرچی تعداد PHP Worker زیادتر باشه، درخواست‌ها هم زودتر پاسخ داده میشن!
  • مسائل مربوط به فایروال هم بخشی از این داستانه و میتونه یه خطاها، پیکربندی نادرست یا قوانینی برای جلوگیری از برقراری ارتباط داشته باشه.
  • در صورتی که اتصال شبکه بین سرور پراکسی و سرور وب مشکل داشته باشه میتونه باعث تاخیر برای درخواست HTTP بشه.
  • زمان انقاضای HHTP هم دلیل دیگه‌ای برای این خطاست که میتونه موقعی که ارتباط بین مرورگر و سرور وب برای مدت طولانی باز مونده اتفاق بیفته و معمولاً وقتی است که راه اندازی وردپرس شروع میشه. یکی از راه‌حل‌های این موضوع اینه که یه اتصال اینترنت سریع‌تر جایگزین کنیم یا میتونین از یه ابزار با ساپورت برای WP-CLI استفاده کنین مثل WordPress Importer Plugin.
هشدار
یادتون باشه که خطاهای ۵۰۴ میتونن به طرز فریبنده‌ای مثل خطای ۵۰۳ یا حتی خطای ۵۰۲ به نظر برسن.

اگه نگران این هستین که در آینده همچین خطاهایی براتون اتفاق بیفته میتونین از ابزار updateown.io نیز استفاده کنین تا در صورت بروز هر اتفاقی بهتون خبر بده. یعنی اگه خدایی نکرده سایت شما داون شد این ابزار براتون یه ایمیل ارسال میکنه و شما کمر به رفع ارور Gateway Timeout ببندین.

۶. اسپم، ربات یا حملات DDoS

یکی از دلایلی که باعث خطای ۵۰۴ میشه اینه که سایت شما توسط محتوای اسپم، ربات ها یا حملات DDoS داون شده باشه و خب اینطوری به یه سری از درخواست‌ها رسیدگی نمیشه و این خطا ظاهر میشه. بعضی اوقات این عوامل باعث سردرگمی سرور و درنتیجه خطای ۵۰۴ میشه.

اسپم، ربات و حملات DDoS

میتونین ترافیک یا IP هایی که در سرور شما مسدود شدن رو شناسایی کنین و برای کمک از یه افزونه امنیتی WordPress استفاده کنین. با این کار میتونین باعث رفع خطای ۵۰۴ بشین!

۷. بررسی افزونه ها و تم ها

خیلی‌ها ممکنه بگن که افزونه ها یا تم های شخص ثالث میتونن باعث ایجاد خطای ۵۰۴ بشن. درسته که بیشتر این موارد باعث این اتفاق نمیشن ولی با این حال یه درخواست ناپایدار از یه افزونه میتونه باعث تاخیر بشه چون که این کار بیشتر PHP Worker شما رو مسدود میکنه و در نتیجه درخواست‌های قدیمی‌تر جا میمونن و خطای ۵۰۴ اتفاق میفته. برای رفع این مشکل چندتا راه حل وجود داره، مثلاً یکیش غیرفعال کردن افزونه‌ها است. البته یادتون باشه اگه افزونه‌ای رو غیرفعال کردین هیچ داده‌ای رو از دست نمیدین. پس نگران نباشین!

برای این کار وارد منوی افزونه ها بشین و گزینه غیرفعال کردن رو بزنین تا همه افزونه ها غیرفعال بشن.

غیرفعال کردن پلاگین ها

اگه این کار باعث رفع مشکل ۵۰۴ شد، باید بگردین و افزونه مقصر رو پیدا کنین. یعنی یکی یکی افزونه ها رو فعال کنین و چک کنین ببینین برای کدوم یکی از اونها همین خطا اتفاق میفته و سپس اون افزونه رو جایگزین کنین و یا با پشتیبانی تماس بگیرین.

اگه به پنل ادمین دسترسی ندارین میتونین از کلاینت FTP استفاده کنین.

رفع خطای 504

این کار رو برای تم ها هم میتونین انجام بدین.

نکته
همیشه مطمئن باشین که افزونه ها، تم ها و هسته وردپرس شما به روز است و حتماً بررسی کنین که نسخه PHP پشتیبانی شده رو اجرا میکنین!

پلاگین ها

۸. بررسی لاگ ها

شما باید سوابق مربوط به خطاهای خودتون رو هم بررسی کنین چون اینکار بهتون اجازه میده که اگه خطایی برای کاربر اتفاق افتاده سریعاً اون رو شناسایی کنین.

اگه میزبان شما ابزاری برای ورود به سیستم نداره، میتونین کد زیر رو به پرونده wp-config.php اضافه کنین تا حالت اشکال زدایی وردپرس فعال بشه:


            define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
                            

لاگ ها

9. تنظیمات Nginx

شما سرور و سایت های خودتون رو در (Nginx+FastCGI (php-fpm یا Nginx به عنوان پراکسی برای آپاچی مدیریت میکنین، برخی تنظیمات اضافی هم وجود داره که میتونین برای جلوگیری از خطای ۵۰۴ ازشون استفاده کنین.

۵۰۴ Gateway Timeout Error on Nginx + FastCGI (php-fpm)

اگه از Nginx یا FastCGI استفاده میکنین، ابتدا باید در فایل PHP-FPM خودتون یه تغییری به وجود بیارین، به etc/php5/fpm/pool.d/www.conf برین و لاین زیر رو تنظیم کنین:


            request_terminate_timeout = 300 
                            

در مرحله بعد باید فایل php.ini خودتون رو که به طور معمول در /etc/php.ini قرار دادره تغییر بدین. دستور العمل max_exception_time رو جستجو کنین. اگه دستور العمل موجود نیست، مقدار اون رو به ۳۰۰ افزایش بدین و سپس این لاین زیر رو وارد کنین:


            max_execution_time = 300 
                            

در آخر هم باید فایل nginx.conf خودتون رو اصلاح کنین و موارد زیر رو در تنظیمات میزبان مجازی Nginx خودتون اضافه کنین:


            location ~ .php$ { ... fastcgi_read_timeout 300; }
                            

سپس به سادگی Nginx و PHP-FPM رو بارگیری مجدد کنین .


            service nginx reload service php5-fpm reload
                            

504 Gateway Timeout Error on Nginx Proxy

اگه از Nginx به عنوان پراکسی برای Appache استفاده میکنین، موارد زیر رو به پرونده nginx.conf خودتون اضافه کنین:


            proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;
                            

سپس به سادگی Nginx رو بارگیری مجدد کنین.

حرف آخر

همانطوری که دیدین روش‌های زیادی برای رفع خطای ۵۰۴ در وردپرس شما وجود داره که میتونین با توجه به علت خطا، از یکی از این روش‌ها استفاده کنین و سایت خودتون رو تا قبل از این که خیلی دیر بشه نجات بدین.

اگه شما هر تجربه و یا سوالی در رابطه با خطای ۵۰۴ دارین حتماً از طریق کامنت‌ها با ما در ارتباط باشین.