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.