Lỗi 502 Bad Gateway
Giới thiệu
Lỗi 502 Bad Gateway là một mã trạng thái HTTP cho biết rằng một máy chủ (thường là reverse proxy hoặc gateway) đã nhận được phản hồi không hợp lệ từ máy chủ upstream mà nó đang cố gắng truy cập.
Nguyên nhân phổ biến
1. Server Backend không phản hồi
- Application server (PHP-FPM, Node.js, Python) bị crash hoặc không chạy
- Database server không kết nối được
- Timeout khi xử lý request
2. Vấn đề với Reverse Proxy
- Nginx hoặc Apache cấu hình sai upstream
- Timeout settings quá ngắn
- Buffer size không đủ
3. Tài nguyên hệ thống
- RAM đã hết
- CPU overload
- Disk space đầy
4. Network Issues
- Firewall chặn kết nối
- DNS không phân giải đúng
- Port không mở
Cách khắc phục
Kiểm tra Application Server
Qua FlashPanel (Khuyên dùng)
- Vào FlashPanel
- Chọn Server của bạn
- Vào tab Applications
- Kiểm tra trạng thái trong danh sách ứng dụng:
- Active: Ứng dụng đang chạy bình thường
- Inactive: Ứng dụng đã dừng hoặc có vấn đề
- Nếu trạng thái là Inactive, click vào ứng dụng để xem chi tiết và khởi động lại
Qua Command Line
PHP-FPM
bash
# Kiểm tra trạng thái PHP-FPM
sudo systemctl status php8.2-fpm
sudo systemctl status php-fpm
# Xem logs
sudo tail -f /var/log/php8.2-fpm.log
sudo tail -f /var/log/php-fpm/error.log
# Restart service
sudo systemctl restart php8.2-fpm
Node.js / PM2
bash
# Kiểm tra processes
pm2 list
pm2 status
# Xem logs
pm2 logs
# Restart
pm2 restart all
Kiểm tra Nginx
Qua FlashPanel (Khuyên dùng)
- Truy cập vào site của bạn trong FlashPanel
- Vào tab Nginx
- Bấm vào nút Error Log để xem error log
- Kiểm tra các lỗi liên quan đến upstream connections hoặc timeouts
Qua Command Line
bash
# Test cấu hình
sudo nginx -t
# Xem logs
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log
# Restart Nginx
sudo systemctl restart nginx
Cấu hình Nginx timeout
nginx
http {
# Tăng timeout settings
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
# Tăng buffer size
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
server {
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_read_timeout 300;
fastcgi_send_timeout 300;
fastcgi_connect_timeout 300;
}
}
Kiểm tra tài nguyên hệ thống
bash
# Kiểm tra RAM
free -h
# Kiểm tra CPU
top
htop
# Kiểm tra disk space
df -h
# Kiểm tra processes
ps aux | grep php-fpm
ps aux | grep nginx
ps aux | grep node
Kiểm tra kết nối
bash
# Test kết nối đến upstream
telnet localhost 9000 # PHP-FPM
telnet localhost 3000 # Node.js app
# Kiểm tra port đang lắng nghe
sudo netstat -tulpn | grep LISTEN
sudo ss -tulpn | grep LISTEN
# Test DNS
nslookup domain.com
dig domain.com
Debug Laravel Application
Kiểm tra Laravel logs
bash
tail -f storage/logs/laravel.log
Tăng PHP memory limit
ini
# php.ini
memory_limit = 512M
max_execution_time = 300
Kiểm tra PHP-FPM pool config
ini
; /etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
Checklist nhanh
- ✅ Kiểm tra application server đang chạy
- ✅ Kiểm tra logs (nginx, php-fpm, application)
- ✅ Kiểm tra tài nguyên hệ thống (RAM, CPU, Disk)
- ✅ Kiểm tra cấu hình timeout
- ✅ Kiểm tra kết nối network
- ✅ Restart các services cần thiết
Tools hữu ích
- htop: Monitor CPU và RAM real-time
- iotop: Monitor disk I/O
- nethogs: Monitor bandwidth per process
- tcpdump: Analyze network traffic
- strace: Debug system calls
- lsof: List open files và network connections