Nguyên nhân và cách khắc phục lỗi 502 bad Gateway

Thảo luận trong 'Kiến Thức' bắt đầu bởi Admin, 31 Tháng ba 2016.

  1. Admin Nothing to lose.. your love to win..

    Bài viết:
    4,093
    502 Bad Gateway là một lỗi thông báo không thể truy cập được trang web ngay tại gateway, xuất hiện khi server chạy trang web đó đang có vấn đề, thông thường là do cấu hình chưa tốt dẫn đến quá tải hoặc đang trong quá trình nâng cấp.

    Các thông báo thường thấy:

    • 502 Proxy Error
    • 502 Server Error: The server encountered a temporary error and could not complete your request.
    • HTTP 502
    • 502 Bad Gateway
    • 502 Service Temporarily Overloaded
    • Error 502
    • Temporary Error (502)
    • 502. That's an error.
    • Bad Gateway: The proxy server received an invalid response from an upstream server.
    • HTTP Error 502 – Bad Gateway

    Để khắc phục lỗi này ở phía client - người truy cập web thì các bạn chỉ việc xóa lịch sử duyệt web để trình duyệt xóa bộ nhớ đêm của trang web đó đi và vào lại là sẽ ok.

    Để xóa lịch sử duyệt web các bạn nhấn tổ hợp phím Ctrl + Shift + Delete chọn OK.

    Hoặc các bạn có thể dùng trình duyệt web khác hoặc trình duyệt ẩn danh để duyệt trang web đó bằng tổ hợp phím Ctrl + Shift + N với chrome và Ctrl + Shift + P với Firefox để xem có phải do máy bạn còn lưu cache mà gặp lỗi hay không.

    Trường hợp vẫn không được các bạn có thể thử thay đổi DNS để máy chủ DNS cập nhật lại trang web đó hoặc reset lại modem.

    Về phía server, lỗi này thường xuất hiện bởi các nguyên nhân chính sau:

    • Sử dụng Nginx chạy như một proxy cache cho máy chủ Apache
    • Nginx đang chạy cùng php-fpm.
    • Cấu hình buffering/timeout chưa tốt.
    • Nginx chạy cùng với dịch vụ khác với vai trò là gateway.

    Cách khắc phục:

    1. Sử dụng Nginx chạy như một proxy cache cho máy chủ Apache: Trong trường hợp này, gateway là apache. Khi bạn sử dụng Nginxlàm proxy cho Apache, nếu Apache die hay nó không được cấu hình tốt, nó có thể gây ra lỗi 502. Trong trường hợp này bạn chỉ cần khởi động lại Apache web server là được, tuy nhiên bạn phải kiểm tra file logs để biết nguyên nhân chính xác gây ra lỗi này.

    2. Nginx đang chạy cùng php-fpm: Cũng như trường hợp Apache, nguyên nhân có thể do php bị ngừng hoạt động hoặc nó bị quá tải khi xử lý các request. PHP-FPM hoạt động không chính xác và không thể xử lý tất cả các request từ Nginx khiến lỗi 502 bad gateway xuất hiện. Và lần này, sửa lỗi bằng cách khởi động lại php-fpm và xem logs.

    Chỉnh www. Conf và vhost. Conf (trong centos: /etc/php-fpm. D/www. Conf và /etc/nginx/conf. D/vhost. Conf) Bạn thử thay sang trường hợp còn lại nếu trường hợp kia bị lỗi sau đó khởi động lại php-fpm. Lưu ý giá trị này trong www. Conf và vhost. Conf phải giống nhau.

    Mã:
    listen = /var/run/php–fpm/php–fpm.sock
    
    hoặc
    
    listen = 127.0.0.1:9000
    3. nginx chạy cùng với dịch vụ khác với vai trò là gateway: Cố gắng khởi động lại các dịch vụ đó và kiểm tra log để tìm ra nguyên nhân lỗi.

    4. Cấu hình buffering/timeout chưa tốt

    Khi bạn gặp lỗi 502 Bad Gateway trên Nginx thì việc đầu tiên là bạn phải coi file log của Nginx trên VPS, thông thường sẽ nằm tại "/var/log/nginx/error.log"

    Khi bạn mở file log ra và kéo xuống dưới cùng sẽ thấy có đoạn báo lỗi tương tự như sau "...upstream sent too big header while reading response header from upstream...".

    Nguyên nhân của lỗi này là do dữ liệu trả về từ PHP-FPM cho Nginx vượt mức giới hạn, do đó bạn cần tăng giới hạn này lên bằng cách thêm 2 dòng sau vào block http {...} của file cấu hình "/etc/nginx/nginx.conf" như sau:

    Mã:
    http {
    #...
    fastcgi_buffers 64 64k;
    fastcgi_buffer_size 64k;
    #...
    }
    Fastcgi Buffer là cách Nginx xử lý dữ liệu trả về từ PHP-FPM để lưu trong bộ nhớ RAM nhằm tăng tốc quá trình xử lý, giá trị của Fastcgi Buffer tuỳ thuộc vào bộ nhớ RAM VPS/Server của bạn.

    Sau đó bạn lưu lại file cấu hình của Nginx và khởi động lại Nginx bằng lệnh sau trên VPS:

    Mã:
    service nginx restart
    Chúc các bạn thành công!
     
    lnanhh thích bài này.
    Chỉnh sửa cuối: 12 Tháng sáu 2016
Trả lời qua Facebook
Đang tải...