502 Bad Gateway Error 
Introduction 
A 502 Bad Gateway error is an HTTP status code that indicates a server (usually a reverse proxy or gateway) received an invalid response from the upstream server it was trying to access.
Common Causes 
1. Backend Server Not Responding 
- Application server (PHP-FPM, Node.js, Python) crashed or not running
- Database server connection failure
- Request processing timeout
2. Reverse Proxy Issues 
- Nginx or Apache misconfigured upstream
- Timeout settings too short
- Insufficient buffer size
3. System Resources 
- Out of RAM
- CPU overload
- Disk space full
4. Network Issues 
- Firewall blocking connections
- DNS resolution failure
- Closed ports
Troubleshooting 
Check Application Server 
Via FlashPanel (Recommended) 
- Go to FlashPanel
- Select your Server
- Go to the Applications tab
- Check the status in the applications list: - Active: Application is running normally
- Inactive: Application is stopped or has issues
 
- If status is Inactive, click on the application to view details and restart it
Via Command Line 
PHP-FPM
bash
# Check PHP-FPM status
sudo systemctl status php8.2-fpm
sudo systemctl status php-fpm
# View 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-fpmNode.js / PM2
bash
# Check processes
pm2 list
pm2 status
# View logs
pm2 logs
# Restart
pm2 restart allCheck Nginx 
Via FlashPanel (Recommended) 
- Access your site in FlashPanel
- Go to the Nginx tab
- Click the Error Log button to view error logs
- Check for any errors related to upstream connections or timeouts
Via Command Line 
bash
# Test configuration
sudo nginx -t
# View logs
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log
# Restart Nginx
sudo systemctl restart nginxNginx Timeout Configuration 
nginx
http {
    # Increase timeout settings
    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 600;
    
    # Increase 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;
    }
}Check System Resources 
bash
# Check RAM
free -h
# Check CPU
top
htop
# Check disk space
df -h
# Check processes
ps aux | grep php-fpm
ps aux | grep nginx
ps aux | grep nodeCheck Connections 
bash
# Test connection to upstream
telnet localhost 9000  # PHP-FPM
telnet localhost 3000  # Node.js app
# Check listening ports
sudo netstat -tulpn | grep LISTEN
sudo ss -tulpn | grep LISTEN
# Test DNS
nslookup domain.com
dig domain.comDebugging Laravel Application 
Check Laravel logs 
bash
tail -f storage/logs/laravel.logIncrease PHP memory limit 
ini
# php.ini
memory_limit = 512M
max_execution_time = 300Check 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 = 500Quick Checklist 
- ✅ Check application server is running
- ✅ Check logs (nginx, php-fpm, application)
- ✅ Check system resources (RAM, CPU, Disk)
- ✅ Check timeout configuration
- ✅ Check network connectivity
- ✅ Restart necessary services
Useful Tools 
- htop: Real-time CPU and RAM monitoring
- iotop: Disk I/O monitoring
- nethogs: Per-process bandwidth monitoring
- tcpdump: Network traffic analysis
- strace: System call debugging
- lsof: List open files and network connections