Tiếng Việt
Lỗi 502 Bad Gateway
Lỗi 502 Bad Gateway xuất hiện khi web server (Nginx hoặc Apache) không nhận được phản hồi hợp lệ từ chương trình chạy phía sau website, ví dụ PHP-FPM, ứng dụng Node.js hoặc Python. Web server vẫn hoạt động, nhưng ứng dụng phía sau đã dừng, quá tải hoặc phản hồi quá chậm.
Nguyên nhân thường gặp
- PHP-FPM hoặc ứng dụng (Node.js, Python…) bị dừng hoặc liên tục khởi động lại.
- Máy chủ hết RAM, CPU quá tải hoặc ổ đĩa đầy.
- Yêu cầu xử lý quá lâu, vượt quá thời gian chờ.
- Ứng dụng chạy sai cổng so với cấu hình của website, hoặc tường lửa chặn kết nối đến máy chủ backend.
Kiểm tra qua FlashPanel
Thực hiện lần lượt các bước sau, đa số trường hợp có thể xác định nguyên nhân mà không cần dùng dòng lệnh.
1. Xem nhật ký lỗi của website
- Mở website trong FlashPanel.
- Trong menu website, chọn Nginx (hoặc Apache) > Nhật ký lỗi.
- Tìm các dòng lỗi xuất hiện đúng thời điểm gặp lỗi 502. Một số thông báo thường gặp:
Connection refusedhoặcNo such file or directory: PHP-FPM hoặc ứng dụng không chạy, hoặc chạy sai cổng.upstream timed out: ứng dụng xử lý quá lâu (xem bước 4).no live upstreams: tất cả máy chủ backend trong Cân bằng tải đều không phản hồi.
2. Kiểm tra PHP-FPM
Áp dụng cho website PHP (WordPress, Laravel…).
- Mở trang Tổng quan của website, xem phiên bản tại dòng PHP.
- Mở máy chủ, chọn menu Ứng dụng.
- Tìm ứng dụng PHP có phiên bản tương ứng và xem nhãn trạng thái cạnh tên:
- Kích hoạt (màu xanh): ứng dụng đang chạy.
- Ngừng kích hoạt (màu đỏ): ứng dụng đã dừng.
- Nếu ứng dụng đã dừng, bấm nút Khởi động hoặc Khởi động lại ở cột thao tác (rê chuột lên biểu tượng để xem tên nút), rồi tải lại website.
- Nếu ứng dụng tiếp tục dừng, bấm nút Nhật ký để xem lỗi. Bạn có thể bật Tự khởi động lại để ứng dụng tự chạy lại khi bị dừng đột ngột. Xem Ứng dụng.
Cách này cũng dùng được để kiểm tra Nginx, Apache, MySQL/MariaDB và các ứng dụng khác mà website cần.
3. Kiểm tra ứng dụng Node.js, Python hoặc tiến trình chạy nền
Nếu website chuyển tiếp truy cập đến một ứng dụng đang chạy trên một cổng, hãy kiểm tra tiến trình đó ở nơi bạn đã khởi chạy nó:
- PM2: xem trạng thái tiến trình, khởi động lại và xem nhật ký. Xem PM2.
- Supervisor: kiểm tra chương trình còn chạy và xem tệp nhật ký. Xem Supervisor.
- Service: xem trạng thái, khởi động lại dịch vụ systemd. Xem Service.
Đảm bảo ứng dụng đang lắng nghe đúng cổng mà website chuyển tiếp đến.
4. Kiểm tra tài nguyên và thời gian chờ
- Mở trang Trang chủ của máy chủ, bật công tắc ở thẻ Thông tin máy chủ để theo dõi mức dùng CPU, RAM theo thời gian thực và xem Tải trung bình. Nếu RAM hoặc CPU thường xuyên ở mức cao, hãy nâng cấp máy chủ hoặc giảm tải.
- Nếu ổ đĩa đầy, dùng tiện ích Dọn dẹp hệ thống ở trang Trang chủ của máy chủ. Xem Dọn dẹp hệ thống.
- Nếu lỗi xảy ra với các tác vụ chạy lâu (nhập dữ liệu, xuất báo cáo…), tăng Thời gian thực thi tối đa tại trang PHP của máy chủ. Thiết lập này cũng điều chỉnh thời gian chờ tương ứng của Nginx. Xem PHP.
Kiểm tra bằng dòng lệnh
Nếu các bước trên chưa tìm ra nguyên nhân, mở Terminal từ trang Tổng quan của website hoặc kết nối SSH vào máy chủ, rồi chạy các lệnh sau. Thay 8.3 bằng phiên bản PHP của website và domain.com bằng tên miền của bạn.
PHP-FPM
bash
sudo systemctl status php8.3-fpm
sudo systemctl restart php8.3-fpmNginx
bash
# Kiểm tra cấu hình có hợp lệ không
sudo nginx -t
# Xem nhật ký lỗi của website
sudo tail -n 100 /var/log/nginx/domain.com-error.logỨng dụng Node.js với PM2
bash
pm2 list
pm2 logs --lines 100Tài nguyên hệ thống và cổng đang lắng nghe
bash
free -h # RAM
df -h # Dung lượng ổ đĩa
top # Tiến trình dùng nhiều CPU/RAM
sudo ss -tulpn # Các cổng đang lắng ngheỨng dụng Laravel
bash
tail -n 100 /home/flashpanel/domain.com/storage/logs/laravel.logDanh sách kiểm tra nhanh
- Xem Nhật ký lỗi của website.
- Kiểm tra PHP-FPM hoặc ứng dụng đang ở trạng thái Kích hoạt.
- Kiểm tra tiến trình trong PM2, Supervisor hoặc Service (với ứng dụng Node.js, Python).
- Kiểm tra CPU, RAM và dung lượng ổ đĩa.
- Tăng Thời gian thực thi tối đa nếu lỗi xảy ra với tác vụ chạy lâu.
- Khởi động lại ứng dụng liên quan và tải lại website.