Skip to main content

Nginx Troubleshooting

Common issues and solutions for Nginx HTTP Server.


Check Nginx Status​

sudo systemctl status nginx
sudo nginx -t

Common Issues​

1. Nginx Won't Start​

Check Error Logs​

sudo tail -f /var/log/nginx/error.log

Common Solutions​

# Check if port 80 is in use
sudo netstat -tulpn | grep :80
sudo lsof -i :80

# Kill process using port 80
sudo fuser -k 80/tcp

# Check Nginx configuration
sudo nginx -t

2. Permission Issues​

Fix File Permissions​

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

Fix Directory Permissions​

sudo chown www-data:www-data /var/www/html
sudo chmod 755 /var/www/html

3. Server Block Not Working​

Check Server Block Configuration​

# Test configuration
sudo nginx -t

# Show configuration
sudo nginx -T

# Check server blocks
sudo nginx -T | grep server

Enable Site (Debian/Ubuntu)​

sudo ln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Check Server Block Files​

ls -la /etc/nginx/sites-enabled/
ls -la /etc/nginx/sites-available/

4. SSL Certificate Issues​

Check SSL Certificate​

# Check certificate validity
openssl x509 -in /etc/ssl/certs/your-cert.crt -text -noout

# Check certificate expiration
openssl x509 -in /etc/ssl/certs/your-cert.crt -noout -dates

Let's Encrypt Issues​

# Check certificate status
sudo certbot certificates

# Test renewal
sudo certbot renew --dry-run

# Force renewal
sudo certbot renew --force-renewal

5. Configuration Issues​

Check Configuration Syntax​

# Test configuration
sudo nginx -t

# Show full configuration
sudo nginx -T

# Check specific configuration file
sudo nginx -t -c /etc/nginx/nginx.conf

Common Configuration Errors​

# Check for syntax errors
sudo nginx -t

# Check for missing files
sudo nginx -t 2>&1 | grep -i "no such file"

# Check for permission issues
sudo nginx -t 2>&1 | grep -i "permission"

6. Performance Issues​

Check Nginx Processes​

# Check running processes
ps aux | grep nginx

# Check memory usage
free -h

# Check CPU usage
top -p $(pgrep nginx | tr '\n' ',' | sed 's/,$//')

Optimize Nginx Configuration​

sudo nano /etc/nginx/nginx.conf

Add/modify these settings:

# Reduce worker processes
worker_processes auto;

# Increase worker connections
events {
worker_connections 1024;
use epoll;
}

# Enable keep-alive
http {
keepalive_timeout 65;
keepalive_requests 100;
}

7. Firewall Issues​

Debian/Ubuntu (UFW)​

# Check UFW status
sudo ufw status

# Allow Nginx
sudo ufw allow 'Nginx Full'

# Check if UFW is blocking
sudo ufw status numbered

CentOS (firewalld)​

# Check firewall status
sudo firewall-cmd --state

# Allow HTTP/HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# Check allowed services
sudo firewall-cmd --list-services

8. Log Analysis​

Check Access Logs​

sudo tail -f /var/log/nginx/access.log

Check Error Logs​

sudo tail -f /var/log/nginx/error.log

Monitor Real-time Logs​

sudo tail -f /var/log/nginx/*.log

Quick Diagnostic Commands​

IssueCommand
Check Nginx statussudo systemctl status nginx
Test configurationsudo nginx -t
Check port usagesudo netstat -tulpn | grep :80
Check processesps aux | grep nginx
Check logssudo tail -f /var/log/nginx/error.log
Check server blockssudo nginx -T | grep server
Check modulessudo nginx -V

Emergency Commands​

# Stop Nginx immediately
sudo systemctl stop nginx

# Start Nginx
sudo systemctl start nginx

# Restart Nginx
sudo systemctl restart nginx

# Reload configuration
sudo systemctl reload nginx

Common Error Messages​

502 Bad Gateway​

  • Cause: Upstream server is down or unreachable
  • Solution: Check backend server status and connectivity

504 Gateway Timeout​

  • Cause: Upstream server is too slow to respond
  • Solution: Increase proxy timeout settings

413 Request Entity Too Large​

  • Cause: Request body exceeds client_max_body_size
  • Solution: Increase client_max_body_size in configuration

403 Forbidden​

  • Cause: Permission issues or missing index file
  • Solution: Check file permissions and index files

Note: Always check logs first when troubleshooting Nginx issues.