Thứ sáu, 24/10/2014 | 00:00 GMT+7

Cách khắc phục sự cố mã lỗi HTTP phổ biến

Khi truy cập vào web server hoặc ứng dụng, mọi yêu cầu HTTP được server nhận đều được phản hồi bằng mã trạng thái HTTP. Mã trạng thái HTTP là mã gồm ba chữ số và được group thành năm lớp khác nhau. Loại mã trạng thái có thể được xác định nhanh chóng bằng chữ số đầu tiên của nó:

  • 1xx: Thông tin
  • 2xx: Thành công
  • 3xx: Chuyển hướng
  • 4xx: Lỗi client
  • 5xx: Lỗi server

Hướng dẫn này tập trung vào việc xác định và khắc phục sự cố các mã lỗi HTTP thường gặp nhất, tức là mã trạng thái 4xx và 5xx, từ quan điểm của administrator hệ thống. Có nhiều tình huống có thể khiến web server phản hồi yêu cầu bằng mã lỗi cụ thể – ta sẽ đề cập đến các nguyên nhân và giải pháp tiềm năng phổ biến.

Tổng quan về lỗi Máy khách và Server

Lỗi ứng dụng client , hoặc mã trạng thái HTTP từ 400 đến 499, là kết quả của các yêu cầu HTTP được gửi bởi ứng dụng client user (tức là trình duyệt web hoặc ứng dụng client HTTP khác). Mặc dù các loại lỗi này có liên quan đến client , nhưng việc biết user đang gặp phải mã lỗi nào sẽ rất hữu ích để xác định xem vấn đề tiềm ẩn có thể được khắc phục bằng cấu hình server hay không.

Lỗi server hoặc mã trạng thái HTTP từ 500 đến 599, được web server trả về khi server biết rằng đã xảy ra lỗi hoặc không thể xử lý yêu cầu.

Mẹo khắc phục sự cố chung

  • Khi sử dụng trình duyệt web để kiểm tra web server , hãy làm mới trình duyệt sau khi thực hiện thay đổi server
  • Kiểm tra log server để biết thêm chi tiết về cách server đang xử lý các yêu cầu. Ví dụ: các web server như Apache hoặc Nginx tạo ra hai file được gọi là access.logerror.log có thể được quét để tìm thông tin liên quan
  • Lưu ý các định nghĩa mã trạng thái HTTP là một phần của tiêu chuẩn được triển khai bởi ứng dụng đang cung cấp các yêu cầu. Điều này nghĩa là mã trạng thái thực tế được trả về phụ thuộc vào cách phần mềm server xử lý một lỗi cụ thể – hướng dẫn này nói chung sẽ chỉ cho bạn đúng hướng

Đến đây bạn đã có hiểu biết cao về mã trạng thái HTTP, ta sẽ xem xét các lỗi thường gặp.

400 Yêu cầu Không hợp lệ

Mã trạng thái 400, hoặc lỗi Yêu cầu không hợp lệ, nghĩa là yêu cầu HTTP được gửi đến server có cú pháp không hợp lệ.

Dưới đây là một số ví dụ về thời điểm có thể xảy ra lỗi 400 Bad Request:

  • Cookie của user được liên kết với trang web bị hỏng. Xóa bộ nhớ cache và cookie của trình duyệt có thể giải quyết vấn đề này
  • Yêu cầu không đúng định dạng do trình duyệt bị lỗi
  • Yêu cầu không đúng định dạng do lỗi của con người khi tạo yêu cầu HTTP theo cách thủ công (ví dụ: sử dụng curl không chính xác)

401 trái phép

Mã trạng thái 401, hoặc lỗi Không được phép , nghĩa là user đang cố gắng truy cập tài nguyên chưa được xác thực hoặc chưa được xác thực chính xác. Điều này nghĩa là user phải cung cấp thông tin xác thực để có thể xem tài nguyên được bảo vệ.

Một tình huống ví dụ trong đó lỗi 401 Unauthorized sẽ được trả về là nếu user cố gắng truy cập tài nguyên được bảo vệ bằng xác thực HTTP, như trong hướng dẫn Nginx này . Trong trường hợp này, user sẽ nhận được mã phản hồi 401 cho đến khi họ cung cấp tên user và password hợp lệ (tên user và password tồn tại trong file .htpasswd ) cho web server .

403 bị cấm

Mã trạng thái 403, hoặc lỗi Forbidden , nghĩa là user đã đưa ra yêu cầu hợp lệ nhưng server từ chối phục vụ yêu cầu do không có quyền truy cập tài nguyên được yêu cầu. Nếu bạn gặp phải lỗi 403 bất ngờ, có một số nguyên nhân điển hình được giải thích ở đây.

Quyền đối với file

Lỗi 403 thường xảy ra khi user đang chạy quy trình web server không có đủ quyền để đọc file đang được truy cập.

Để đưa ra ví dụ về cách khắc phục lỗi 403, hãy giả sử tình huống sau:

  • User đang cố gắng truy cập file index của web server , từ http://example.com/index.html
  • Quy trình công nhân web server thuộc sở hữu của user www-data
  • Trên server , file index được đặt tại /usr/share/nginx/html/index.html

Nếu user gặp lỗi 403 Forbidden, hãy đảm bảo user www-data có đủ quyền để đọc file . Thông thường, điều này nghĩa là các quyền khác của file phải được đặt để đọc . Có một số cách đảm bảo điều này, nhưng lệnh sau sẽ hoạt động trong trường hợp này:

sudo chmod o=r /usr/share/nginx/html/index.html 

.htaccess

Một nguyên nhân tiềm ẩn khác của lỗi 403, thường chủ yếu là việc sử dụng .htaccess . Ví dụ: .htaccess được dùng để từ chối quyền truy cập của một số tài nguyên vào các địa chỉ hoặc dải IP cụ thể.

Nếu user bất ngờ nhận được lỗi 403 Forbidden, hãy đảm bảo lỗi không phải do cài đặt .htaccess của bạn gây ra.

Tệp index không tồn tại

Nếu user đang cố gắng truy cập vào folder không có file index mặc định và danh sách folder không được bật, web server sẽ trả về lỗi 403 Forbidden. Ví dụ: nếu user đang cố gắng truy cập vào http://example.com/emptydir/ và không có file index nào trong folder emptydir trên server , trạng thái 403 sẽ được trả về.

Nếu bạn muốn danh sách folder được bật, bạn có thể làm như vậy trong cấu hình web server của bạn .

404 không tìm thấy

Mã trạng thái 404, hoặc lỗi Không tìm thấy , nghĩa là user có thể giao tiếp với server nhưng không thể định vị file hoặc tài nguyên được yêu cầu.

Lỗi 404 có thể xảy ra trong nhiều trường hợp. Nếu user bất ngờ nhận được lỗi 404 Not Found, sau đây là một số câu hỏi để hỏi khi khắc phục sự cố:

  • Liên kết dẫn user đến tài nguyên server của bạn có lỗi đánh máy không?
  • User có nhập sai URL không?
  • Tệp có tồn tại ở đúng vị trí trên server không? Tài nguyên đã bị di chuyển hay bị xóa trên server ?
  • Cấu hình server có đúng vị trí root của tài liệu không?
  • User sở hữu quy trình công nhân web server có quyền truy cập vào folder chứa file được yêu cầu không? (Gợi ý: folder yêu cầu quyền đọc và thực thi để được truy cập)
  • Tài nguyên đang được truy cập có phải là một softlink không? Nếu vậy, hãy đảm bảo web server được cấu hình theo các softlink

Lỗi server nội bộ 500

Mã trạng thái 500, hoặc Lỗi server nội bộ , nghĩa là server không thể xử lý yêu cầu vì một lý do không xác định. Đôi khi mã này sẽ xuất hiện khi các lỗi 5xx cụ thể hơn phù hợp hơn.

Nguyên nhân phổ biến nhất gây ra lỗi này là do cấu hình sai server (ví dụ: .htaccess không đúng định dạng) hoặc thiếu gói (ví dụ: cố gắng thực thi file PHP mà không cài đặt PHP đúng cách).

502 Bad Gateway

Mã trạng thái 502, hoặc lỗi Bad Gateway , nghĩa là server là một cổng hoặc server proxy và nó không nhận được phản hồi hợp lệ từ các server backend thực sự đáp ứng yêu cầu.

Nếu server được đề cập là server Reverse Proxy , chẳng hạn như bộ cân bằng tải, đây là một số điều cần kiểm tra:

  • Các server backend (nơi các yêu cầu HTTP đang được chuyển tiếp đến) hoạt động tốt
  • Reverse-proxy được cấu hình đúng cách, với các backend thích hợp được chỉ định
  • Kết nối mạng giữa các server backend và server Reverse Proxy hoạt động tốt. Nếu các server có thể giao tiếp trên các cổng khác, hãy đảm bảo firewall đang cho phép lưu lượng giữa chúng
  • Nếu ứng dụng web của bạn được cấu hình để lắng nghe trên một socket , hãy đảm bảo socket tồn tại ở vị trí chính xác và nó có quyền thích hợp

Lỗi 503: Dịch vụ không khả dụng

Mã trạng thái 503 hoặc lỗi Dịch vụ không khả dụng , nghĩa là server bị quá tải hoặc đang được bảo trì.Lỗi này ngụ ý rằng dịch vụ sẽ khả dụng vào một thời điểm nào đó.

Nếu server không được bảo trì, điều này có thể cho biết server không có đủ tài nguyên CPU hoặc bộ nhớ để xử lý tất cả các yêu cầu đến hoặc web server cần được cấu hình để cho phép nhiều user , stream hoặc quy trình hơn.

504 Gateway Timeout

Mã trạng thái 504, hoặc lỗi Gateway Timeout , nghĩa là server là một cổng hoặc server proxy và nó không nhận được phản hồi từ các server backend trong repository ảng thời gian cho phép.

Điều này thường xảy ra trong các trường hợp sau:

  • Kết nối mạng giữa các server kém
  • Server backend đáp ứng yêu cầu quá chậm do hiệu suất kém
  • Khoảng thời gian chờ của cổng hoặc server proxy quá ngắn

Kết luận

Đến đây bạn đã quen với các mã lỗi HTTP phổ biến nhất và các giải pháp phổ biến cho các mã đó, bạn sẽ có cơ sở tốt để khắc phục sự cố với web server hoặc ứng dụng của bạn .

Nếu bạn gặp bất kỳ mã lỗi nào không được đề cập trong hướng dẫn này hoặc nếu bạn biết về các giải pháp khả thi khác cho những mã đã được mô tả, vui lòng thảo luận về chúng trong phần comment !


Tags:

Các tin liên quan