۱۳۹۵ شهریور ۱۷, چهارشنبه

معرفی رایج ترین خطاهای HTTP و روش های رفع آن

هنگام دسترسی به یک وب سرور و یا نرم افزار، هر درخواست HTTP که توسط سرور دریافت می شود با یک کد وضعیت HTTP پاسخ داده میشود. کدهای وضعیت HTTP سه رقمی بوده و به پنج کلاس مختلف گروه بندی می شود. کلاس کد وضعیت، می تواند به سرعت با رقم اول شناسایی شود:
۱xx: اطلاعاتی
۲xx: موفقیت
۳XX: تغییر مسیر
۴xx: ارور سمت سرویس گیرنده
۵xx: ارور سمت سرور
در این راهنما بر روی شناسایی و عیب یابی رایج ترین کدهای خطای HTTP ، یعنی کدهای وضعیت ۴xx و ۵xx تمرکز میکنیم. موقعیت های بسیاری وجود دارد که می تواند باعث شود یک وب سرور با یک ارور خاص به یک درخواست پاسخ دهد – در این آموزش ما علل بالقوه و راه حل آن را پوشش خواهیم داد.
بررسی اجمالی ارور سمت سرور و سمت سرویس گیرنده
ارور سمت سرویس گیرنده و یا کدهای وضعیت HTTP بین ۴۰۰-۴۹۹ ، در نتیجه درخواست HTTP فرستاده شده توسط کاربر سرویس گیرنده رخ میدهد (به عنوان مثال یک مرورگر وب و یا سرویس گیرنده HTTP دیگر). اگرچه این نوع از خطاها مربوط به سرویس گیرنده است ، اما باید بدانیم مواجهه با کدام ارور توسط کاربر با تغییر پیکربندی سرور حل میشود .
ارور سمت سرور و یا کدهای وضعیتHTTP بین ۵۰۰-۵۹۹، توسط یک وب سرور در هنگام رخ دادن یک خطا یا ناتوانی در پردازش درخواست مشاهده میشود.
نکات عمومی :
  • هنگامی که از یک مرورگر وب برای تست وب سرور استفاده میکنید، پس از ایجاد تغییرات سرور ، با گزینه refresh مرورگر را ریلودکنید.
  • برای دریافت جزئیات بیشتر در مورد چگونگی هندلینگ درخواست ها توسط سرور، لاگ های سرور (server logs) را بررسی کنید. به عنوان مثال، وب سرور هایی مانند Apache و یا Nginx دو فایل به نام log و error.log ایجاد میکنند که میتوان برای بدست آوردن اطلاعات مربوطه، آنها را مورد بررسی قرار داد.
  • به خاطر داشته باشید که تعاریف کد وضعیت HTTP بخشی از استانداردیست که توسط یک برنامه ارائه کننده درخواست ها پیاده سازی شده است . این بدان معناست که کد وضعیت در واقع با توجه به نحوه ی هندل کردن یک خطای خاص توسط نرم افزار سرور نشان داده میشود. این راهنما به طور کلی شما را به مسیر درست هدایت میکند .

معرفی رایج ترین خطاهای HTTP و روش های رفع آن

۴۰۰ Bad Request
کد وضعیت۴۰۰ یا ۴۰۰ Bad Request زمانی رخ میدهد که یک درخواست HTTP به طور نادرست به سرور فرستاده شده باشد.
برخی از دلایل احتمالی رخ دادن این ارور عبارتند از:
  • کوکی مرتبط با سایت که در مرورگر کاربر ذخیره شده این مشکل را ایجاد کرده که با حذف cache و cookies مرورگر حل خواهد شد.
  • درخواست ناقصی که توسط یک مرورگر معیوب فرستاده شده باشد.
  • درخواست ناقصی که به علت خطای انسانی در هنگام دستی وارد کردن درخواست HTTP فرستاده شده باشد.
۴۰۱ Unauthorized
کد وضعیت ۴۰۱ و یا خطای غیر مجاز، بدان معناست که کاربر در تلاش بوده به منابعی دسترسی داشته باشد که برای ورود به نام کاربری یا پسورد معتبر نیاز دارد و یا موارد تائید هویت ( نام کاربری و پسورد ) را به درستی وارد نکرده باشد. به عبارت دیگر کاربر باید اعتبار لازم برای ورود به این صفحات حفاظت شده را داشته باشد.
یک مثال برای مشاهده خطای ۴۰۱ Unauthorized این است که یک کاربر تلاش می کند به منبعی که با صفحه تائید هویت HTTP محافظت شده دسترسی پیدا کند. تا زمانی که یک نام کاربری و رمز عبور معتبر (که در فایل htpasswd. وجود دارد) به وب سرور ارائه نشود، پاسخ دریافت شده توسط کاربر، خطای ۴۰۱ خواهد بود.
۴۰۳ Forbidden
کد وضعیت ۴۰۳ ، بدان معناست که کاربر یک درخواست معتبر ارسال کرده ، اما سرور به علت نداشتن مجوز لازم برای دسترسی به منابع، از پاسخگویی به این درخواست امتناع میکند. اگر به طور غیر منتظره، با خطای ۴۰۳ مواجه شدید، این ارور ممکن است به یکی از دلایل زیر رخ داده باشد:
مجوزهای دسترسی فایل:
خطای ۴۰۳ معمولا زمانی رخ می دهد که کاربری که در حال اجرای فرآیندهای وب سرور است برای خواندن فایل دردسترس، مجوز کافی نداشته باشد.
برای عیب یابی خطای ۴۰۳، شرایط زیر را در نظر بگیرید:
  • کاربر در حال تلاش برای دسترسی به فایل index وب سرور از آدرس http://example.com/index.html است.
  • فرایندهای مربوط به وب سرور توسط کاربر www-data انجام میشود .
  • فایل index بر روی سرور در مسیر /usr/share/nginx/html/index.html واقع شده است.
اگر کاربر با خطای ۴۰۳ Forbidden روبرو شد ، اطمینان حاصل کنید که کاربر www-data مجوز کافی برای خواندن فایل را دارد. به طور معمول، این بدان معناست که سایر مجوزهای فایل باید بر روی خواندن (read) تنظیم شده باشد . راه های مختلفی برای اطمینان از این امر وجود دارد، اما دستور زیر در این مورد کار ساز خواهد بود:
sudo chmod o=r /usr/share/nginx/html/index.html

htaccess.
یک علت بالقوه دیگر برای مشاهده خطای ۴۰۳ که اغلب به عمد اتفاق می افتد، استفاده از فایل htaccess. است. این فایل می تواند مانع دسترسی به منابع خاص توسط آدرس IP های خاص شود.
اگر کاربر به طور غیر منتظره ای با خطای ۴۰۳ Forbidden مواجه شود، اطمینان حاصل کنید که به دلیل تنظیمات فایل htaccess. نباشد.
عدم وجود فایل index
اگر کاربری برای دسترسی به یک دایرکتوری که به طور پیش فرض فایل index ندارد تلاش میکند و directory listing نیز فعال نیست، وب سرور خطای ۴۰۳ Forbidden را نشان میدهد. برای مثال، اگر کاربر در تلاش است که به http://example.com/emptydir/، دسترسی پیدا کند و فایل index در دایرکتوری emptydir بر روی سرور وجود ندارد، با این ارور مواجه خواهد شد.
برای فعال کردن directory listing باید از فایل پیکربندی وب سرور اقدام کنید.
 
Not Found404
کد وضعیت۴۰۴ ، زمانی رخ میدهد که کاربر قادر به برقراری ارتباط با سرور باشد، اما سرور قادر به مکان یابی فایل یا منابع درخواست شده نیست.
شرایط زیادی برای رخ دادن این ارور وجود دارد. اگر کاربر به طور غیر منتظره خطای ۴۰۴ Not Found دریافت کند ، سوالات زیر مطرح میشود:
  • آیا لینکی که کاربر را به منابع سرور شما هدایت میکند خطای تایپی دارد؟
  • آیا کاربر URL را اشتباه تایپ کرده است؟
  • آیا فایل در مکان صحیحی بر روی سرور قرار گرفته است؟ آیا منبع، منتقل و یا از روی سرور حذف شده است ؟
  • آیا تنظیمات سرور حاوی محل صحیح سند root می باشد؟
  • آیا کاربری که اجرا کننده فرآیندهای وب سرور است دسترسی لازم برای ورود به پوشه ای که فایل مورد درخواست در آن واقع شده را دارد؟
۵۰۰ Internal Server Error
کد وضعیت۵۰۰ یا خطای ۵۰۰ Internal Server بدان معناست که سرور به دلیل نامعلوم نمی تواند درخواست را پردازش کند.
شایع ترین علت این خطا، پیکربندی اشتباه سرور (به عنوان مثال یک فایل htaccess. ناقص) و یا پکیج های از دست رفته (به عنوان مثال تلاش برای اجرای یک فایل PHPدر صورتی که PHPبه درستی نصب نشده ) می باشد.
۵۰۲ Bad Gateway
کد وضعیت۵۰۲ ، بدان معناست که سرور به عنوان یک gateway یا پراکسی سرور عمل کرده و پاسخ معتبری از بک اند سرور که باید در واقع درخواست را به انجام برساند دریافت نمیکند.
اگر سرور یک پروکسی سرور معکوس، مانند load balancer باشد، باید از چند چیز اطمینان حاصل شود:
  • بک اند سرور (جایی که درخواست HTTP از آنجا فوروارد میشود) سالم باشد
  • پروکسی معکوس به درستی و با بک اند مشخص شده ی مناسب ، پیکربندی شده باشد.
  • network connection بین بک اند سرور و پروکسی سرور معکوس سالم باشد. اگر سرور می تواند بر روی پورت های دیگر ارتباط برقرار کند، مطمئن شوید که فایروال اجازه ترافیک بین آنها را می دهد.
۵۰۳ Service Unavailable
کد وضعیت۵۰۳ هنگامی رخ میدهد که سرور بیش از حد مشغول یا تحت تعمیر است. این خطا نشان می دهد که این سرویس باید در برخی نقاط در دسترس باشد.
اگر سرور تحت تعمیر نباشد، این ارور ممکن است نشان دهنده کمبود منابع CPU یا حافظه سرور برای رسیدگی به تمام درخواست های ورودی باشد یا این که وب سرور برای پذیرش کاربران، موضوعات و یا فرآیندهای بیشتر نیاز به پیکربندی داشته باشد.
۵۰۴ Gateway Timeout
کد وضعیت۵۰۴ ، بدان معناست که سرور به عنوان یک Gateway یا پراکسی سرور عمل کرده و پاسخی از بک اند سرور در مدت زمان مجاز دریافت نمیکند.
این ارور به طور معمول در شرایط زیر رخ می دهد:
  • اتصال شبکه بین سرور ها ضعیف باشد.
  • بک اند سرور که درخواست ها را انجام میدهد به دلیل عملکرد ضعیف، بیش از حد کند باشد.
  • مدت زمان تعیین شده Gateway یا پراکسی سرور خیلی کوتاه باشد.

هیچ نظری موجود نیست:

ارسال یک نظر