Επιστροφή στο blog

Αντιμετώπιση κοινών κωδικών σφάλματος HTTP

Αντιμετώπιση κοινών κωδικών σφάλματος HTTP

Κάθε διακομιστής ιστού που λαμβάνει ένα HTTP αίτημα απαντάται με έναν κωδικό κατάστασης HTTP. Αυτοί οι κώδικες είναι σύντομες σημειώσεις από τον διακομιστή που περιγράφουν την κατάσταση. Δεν περιέχουν πραγματικό περιεχόμενο ιστότοπου. Αντίθετα, είναι μια αναφορά για το πώς εξελίχθηκαν τα πράγματα μετά τη λήψη του αιτήματος HTTP. Σε πολλές περιπτώσεις, αυτοί οι κωδικοί είναι σημαντικοί για τη διάγνωση διαφόρων προβλημάτων διακομιστή/πελάτη.

Αυτοί οι κωδικοί είναι τριψήφιοι ακέραιοι αριθμοί, καθένας από τους οποίους υποδηλώνει διάφορες καταστάσεις. Με βάση το πρώτο ψηφίο, οι κωδικοί HTTP χωρίζονται σε πέντε κατηγορίες:

  • Πληροφοριακές αποκρίσεις: Οι τιμές κυμαίνονται από 100 έως 199. Περιγράφει ότι το αίτημα λήφθηκε και βρίσκεται υπό επεξεργασία.

  • Επιτυχείς αποκρίσεις: Οι τιμές κυμαίνονται από 200 έως 299. Δηλώνει ότι η ενέργεια λήφθηκε, έγινε κατανοητή και έγινε αποδεκτή με επιτυχία.

  • Μηνύματα ανακατεύθυνσης: Οι τιμές κυμαίνονται από 300 έως 399. Σημαίνει ότι απαιτούνται περαιτέρω ενέργειες για την ολοκλήρωση του αιτήματος.

  • Αποκρίσεις σφάλματος πελάτη: Οι τιμές κυμαίνονται από 400 έως 499. Είτε το αίτημα περιέχει εσφαλμένη σύνταξη είτε δεν μπορεί να ικανοποιηθεί.

  • Αποκρίσεις σφάλματος διακομιστή: Οι τιμές κυμαίνονται από 500 έως 599. Σημαίνει ότι ο διακομιστής απέτυχε να επεξεργαστεί ένα έγκυρο αίτημα.

Σε αυτόν τον οδηγό, θα συζητήσουμε μερικούς από τους πιο συνηθισμένους κωδικούς σφάλματος HTTP που αντιμετωπίζουν όλοι (4xx και 5xx), από την οπτική γωνία ενός διαχειριστή συστήματος. Πολλές καταστάσεις μπορούν να οδηγήσουν τον διακομιστή ιστού να απαντήσει με έναν συγκεκριμένο κωδικό. Επιπλέον, αυτός ο οδηγός θα συζητήσει πιθανές αιτίες και λύσεις.

Σφάλματα Πελάτη έναντι Σφαλμάτων Διακομιστή

Οι κωδικοί σφάλματος 400 έως 499 προκύπτουν από τον πελάτη χρήστη (ένα πρόγραμμα περιήγησης ιστού ή οποιονδήποτε πελάτη HTTP). Αν και τα σφάλματα σχετίζονται κυρίως με τον πελάτη, είναι χρήσιμο να γνωρίζετε ποιον κωδικό αντιμετωπίζει ένας χρήστης. Μπορεί να βοηθήσει στον προσδιορισμό του εάν ένα πιθανό πρόβλημα μπορεί να επιλυθεί από την πλευρά του διακομιστή.

Τα σφάλματα διακομιστή (κωδικός κατάστασης HTTP 500 έως 599), από την άλλη πλευρά, προκύπτουν όταν ο διακομιστής γνωρίζει ότι έχει προκύψει σφάλμα ή δεν είναι σε θέση να επεξεργαστεί το αίτημα.

Γενική Αντιμετώπιση Προβλημάτων

Ανεξάρτητα από το σφάλμα, ακολουθούν μερικές γενικές συμβουλές αντιμετώπισης προβλημάτων που θα πρέπει να δοκιμάσετε πρώτα όποτε αντιμετωπίζετε οποιονδήποτε κωδικό σφάλματος HTTP:

  • Όταν χρησιμοποιείτε ένα πρόγραμμα περιήγησης ιστού για να δοκιμάσετε τον διακομιστή, είναι καλή πρακτική να ανανεώνετε το πρόγραμμα περιήγησης μετά από οποιαδήποτε αλλαγή στον διακομιστή.

  • Το αρχείο καταγραφής του διακομιστή περιέχει λεπτομερείς πληροφορίες σχετικά με τον τρόπο με τον οποίο ο διακομιστής χειρίζεται τα αιτήματα. Για παράδειγμα, δημοφιλείς διακομιστές ιστού όπως ο Apache και ο Nginx παράγουν αρχεία access.log και error.log. Ο έλεγχος αυτών των αρχείων καταγραφής μπορεί να αποκαλύψει χρήσιμες πληροφορίες.

  • Οι κωδικοί σφάλματος HTTP αποτελούν μέρος ενός προτύπου. Τα προγράμματα εφαρμόζουν αυτό το πρότυπο με βάση τον τρόπο που χειρίζονται τα αιτήματα. Αυτό σημαίνει ότι επιστρέφεται ένας συγκεκριμένος κωδικός κατάστασης ανάλογα με τον τρόπο που το λογισμικό του διακομιστή χειρίζεται το συγκεκριμένο σφάλμα.

Αυτός ο οδηγός θα πρέπει να χρησιμεύσει ως μια χρήσιμη κατευθυντήρια γραμμή για τον εντοπισμό της πηγής του προβλήματος.

Συνήθη Σφάλματα HTTP

  1. Συνήθη Σφάλματα Πελάτη

error 400

Ο κωδικός σφάλματος 400 υποδεικνύει ένα Μη Έγκυρο Αίτημα (Bad Request). Περιγράφει ότι το αίτημα HTTP που στάλθηκε στον διακομιστή περιέχει μη έγκυρη σύνταξη. Ας ρίξουμε μια ματιά στις πιθανές πηγές της λανθασμένης σύνταξης:

  • Τα cookie που σχετίζονται με τον ιστότοπο ενδέχεται να είναι κατεστραμμένα. Ο καθαρισμός των cookie και της προσωρινής μνήμης του προγράμματος περιήγησης μπορεί να λύσει το πρόβλημα.

  • Το πρόγραμμα περιήγησης ιστού που στέλνει το αίτημα ενδέχεται να είναι ελαττωματικό/να παρουσιάζει σφάλματα.

  • Θα μπορούσε να είναι ένα μη έγκυρο αίτημα λόγω σφάλματος κατά τη μη αυτόματη διαμόρφωση αιτημάτων HTTP, για παράδειγμα, εσφαλμένη χρήση του curl.

error code 401

Ο κωδικός σφάλματος 401 (Μη εξουσιοδοτημένο) παρουσιάζεται όταν το αίτημα προσπαθεί να αποκτήσει πρόσβαση σε πόρους που δεν έχουν πιστοποιηθεί ή δεν έχουν πιστοποιηθεί σωστά. Για να επιλυθεί το πρόβλημα, ο χρήστης πρέπει να παρέχει τα απαραίτητα διαπιστευτήρια για πρόσβαση στον προστατευόμενο πόρο.

Ένα παράδειγμα θα ήταν όταν ο χρήστης προσπαθεί να αποκτήσει πρόσβαση σε έναν πόρο που προστατεύεται από έλεγχο ταυτότητας HTTP. Σε μια τέτοια περίπτωση, ο χρήστης θα λάβει έναν κωδικό σφάλματος 401, εκτός εάν παρέχεται έγκυρο όνομα χρήστη και κωδικός πρόσβασης.

error 403

Ο κωδικός σφάλματος 403 (Απαγορεύεται) αναφέρεται σε μια κατάσταση όπου το αίτημα του χρήστη είναι έγκυρο αλλά ο διακομιστής αρνείται να το εξυπηρετήσει. Αυτό μπορεί να οφείλεται σε έλλειψη δικαιωμάτων πρόσβασης στον ζητούμενο πόρο. Υπάρχουν μερικά σενάρια που μπορούν να οδηγήσουν σε αυτό το πρόβλημα:

  • Δικαιώματα αρχείων: Εάν ο διακομιστής δεν έχει επαρκή δικαιώματα πρόσβασης στο ζητούμενο αρχείο, αυτό μπορεί να οδηγήσει σε σφάλμα 403. Οι πιθανές διορθώσεις περιλαμβάνουν την επαλήθευση ότι ο διακομιστής προσπαθεί να αποκτήσει πρόσβαση στο αρχείο index του διακομιστή ιστού, στη διεργασία worker που ανήκει στον www-data χρήστη, και το αρχείο index βρίσκεται στη σωστή τοποθεσία (στην περίπτωση του Nginx, είναι το /usr/share/nginx/html/index.html).

  • .htaccess: Οι διακομιστές ιστού χρησιμοποιούν το .htaccess αρχείο για να εφαρμόσουν διάφορες λειτουργίες ασφαλείας, για παράδειγμα, το φιλτράρισμα συγκεκριμένων διευθύνσεων IP ή εύρους διευθύνσεων. Μια πιθανή διόρθωση περιλαμβάνει την επαλήθευση ότι η διεύθυνση IP από την οποία προέρχεται το αίτημα HTTP δεν είναι αποκλεισμένη.

  • Το αρχείο δεν υπάρχει: Εάν το αίτημα προσπαθεί να αποκτήσει πρόσβαση σε μια τοποθεσία που δεν έχει προεπιλεγμένο αρχείο index και οι λίστες καταλόγων δεν είναι ενεργοποιημένες, ο διακομιστής θα επιστρέψει το σφάλμα 403. Σε μια τέτοια περίπτωση, μια πιθανή διόρθωση περιλαμβάνει την τροποποίηση της διαμόρφωσης του διακομιστή ώστε να επιτρέπονται οι λίστες καταλόγων.

error 404

Ο κωδικός σφάλματος 404 (Not Found) σημαίνει ότι ο χρήστης μπόρεσε να συνδεθεί επιτυχώς στον διακομιστή ιστού αλλά δεν μπόρεσε να εντοπίσει τον ζητούμενο πόρο. Αυτό το σφάλμα μπορεί να εμφανιστεί σε διάφορες περιπτώσεις. Ακολουθούν ορισμένες πιθανές ενέργειες αντιμετώπισης προβλημάτων:

  • Ελέγξτε για τυχόν ορθογραφικά σφάλματα στον σύνδεσμο που κατεύθυνε τον χρήστη στον πόρο του διακομιστή.

  • Ο χρήστης μπορεί να πληκτρολόγησε λάθος τη διεύθυνση URL. Ελέγξτε αν συμβαίνει αυτό και διορθώστε το εάν είναι απαραίτητο.

  • Επαληθεύστε την ύπαρξη του αρχείου στον διακομιστή. Μετακινήθηκε ή διαγράφηκε από τον διακομιστή;

  • Ο διακομιστής ενδέχεται να έχει ρυθμιστεί με λάθος τοποθεσία document root. Ελέγξτε το αυτό και διορθώστε το εάν είναι απαραίτητο.

  • Έχει η διεργασία worker του διακομιστή ιστού που ανήκει στον χρήστη άδεια να διασχίσει το ζητούμενο αρχείο; Σημειώστε ότι απαιτείται να υπάρχουν δικαιώματα τόσο ανάγνωσης όσο και εκτέλεσης για την πρόσβαση σε έναν κατάλογο.

  • Είναι ο πόρος συμβολικός σύνδεσμος (symbolic link); Σε αυτήν την περίπτωση, ο διακομιστής πρέπει να έχει ρυθμιστεί ώστε να ακολουθεί συμβολικούς συνδέσμους.

  1. Συνήθη σφάλματα διακομιστή

error code 500

Ο κωδικός σφάλματος 500 (Internal Server Error) παρουσιάζεται όταν ο διακομιστής δεν μπορεί να επεξεργαστεί το αίτημα για άγνωστους λόγους. Σε ορισμένες περιπτώσεις, ο διακομιστής θα αναφέρει σφάλμα 500 όταν ένας πιο συγκεκριμένος κωδικός σφάλματος 5xx θα ήταν καταλληλότερος.

Μία από τις πιο συνηθισμένες πηγές του σφάλματος 500 είναι ένας κακώς ρυθμισμένος διακομιστής, για παράδειγμα, ένα κακοσχηματισμένο .htaccess αρχείο. Μπορεί επίσης να προκύψει εάν λείπουν πακέτα, για παράδειγμα, προσπαθώντας να εκτελέσετε κώδικα PHP χωρίς να έχετε εγκαταστήσει την PHP στο σύστημα.

error code 502

Ο κωδικός σφάλματος 502 (Bad Gateway) υποδηλώνει ότι ο διακομιστής είναι διαμεσολαβητής (proxy) ή πύλη (gateway) και δεν μπορεί να λάβει έγκυρη απόκριση από τον διακομιστή backend (ο οποίος είναι υπεύθυνος για την πραγματική εκπλήρωση του αιτήματος). Εάν ο διακομιστής είναι αντίστροφος διαμεσολαβητής (reverse proxy), για παράδειγμα, ένας εξισορροπητής φορτίου (load balancer), υπάρχουν μερικά διαφορετικά πράγματα που πρέπει να ελέγξετε:

  • Οι διακομιστές backend είναι υγιείς.

  • Ο αντίστροφος διαμεσολαβητής (reverse proxy) είναι σωστά ρυθμισμένος (με τις κατάλληλες προδιαγραφές backend).

  • Η σύνδεση μεταξύ του αντίστροφου διαμεσολαβητή και του διακομιστή backend είναι υγιής. Εάν οι διακομιστές μπορούν να επικοινωνούν χρησιμοποιώντας διαφορετικές θύρες, τότε το τείχος προστασίας (firewall) πρέπει να επιτρέπει τη σύνδεση σε αυτές τις θύρες.

  • Εάν η εφαρμογή ιστού είναι ρυθμισμένη να χρησιμοποιεί socket, βεβαιωθείτε ότι το socket υπάρχει στη σωστή τοποθεσία με τα κατάλληλα δικαιώματα.

error code 503

Ο κωδικός σφάλματος 503 (Service Unavailable) περιγράφει ότι ο διακομιστής αντιμετωπίζει υπερφόρτωση ή βρίσκεται υπό συντήρηση. Αυτό υποδηλώνει ότι ο διακομιστής θα γίνει διαθέσιμος κάποια στιγμή.

Εάν ο διακομιστής δεν βρίσκεται υπό συντήρηση, τότε αυτό υποδηλώνει ότι ο διακομιστής δεν διαθέτει τους απαραίτητους πόρους υλικού (επεξεργαστική ισχύ, μνήμη κ.λπ.) για τη διαχείριση των εισερχόμενων αιτημάτων. Σε μια τέτοια περίπτωση, ο διακομιστής θα πρέπει να ρυθμιστεί ώστε να επιτρέπει περισσότερους χρήστες ή να εκχωρεί περισσότερους πόρους.

Ο κωδικός σφάλματος 504 (Gateway Timeout) δηλώνει ότι ο διακομιστής είναι διαμεσολαβητής (proxy) ή διακομιστής πύλης (gateway) και δεν έλαβε απάντηση από το backend εντός του επιτρεπόμενου χρονικού ορίου. Υπάρχουν διάφορες καταστάσεις που μπορούν να οδηγήσουν σε αυτό το ζήτημα:

  • Μια κακή σύνδεση δικτύου μεταξύ των διακομιστών.

  • Ο διακομιστής backend λειτουργεί πολύ αργά (λόγω προβλημάτων απόδοσης).

  • Το χρονικό όριο (timeout) του διακομιστή πύλης/διαμεσολαβητή είναι πολύ περιορισμένο.

Τελικές σκέψεις

Αυτός ο οδηγός αναλύει τους κωδικούς σφάλματος HTTP, ιδιαίτερα μερικούς από τους πιο συνηθισμένους. Περιγράφει τι σημαίνουν οι κωδικοί και παρέχει προτάσεις για πιθανές ενέργειες αντιμετώπισης προβλημάτων. Με αυτή τη γνώση, έχετε πλέον μια σταθερή βάση για την αντιμετώπιση προβλημάτων με τους διακομιστές ιστού ή τις εφαρμογές σας.

Αυτή είναι απλώς μια σύντομη λίστα με τους πιο δημοφιλείς κωδικούς κατάστασης HTTP. Για μια ολοκληρωμένη λίστα με όλους τους κωδικούς κατάστασης HTTP, δείτε τους κωδικούς κατάστασης HTTP στη Wikipedia. Μπορείτε επίσης να δείτε τον οδηγό μας σχετικά με το Nginx HTTP Proxying, Load Balancing, Buffering, and Caching: μια επισκόπηση.

Καλή συνέχεια!

author

Pranay Kapgate

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.