Introduction

Nginx TCP/UDP proxy fails when stream block or upstream configuration issue. This guide provides step-by-step diagnosis and resolution.

Symptoms

Typical error output:

bash
Error: Nginx operation failed
Check Nginx error log: /var/log/nginx/error.log
Verify configuration syntax with nginx -t

Common Causes

  1. 1.Configuration syntax error or invalid directive
  2. 2.Upstream server unreachable or timeout exceeded
  3. 3.SSL certificate not found or configuration issue
  4. 4.Resource limit exceeded (connections, files, memory)

Step-by-Step Fix

Step 1: Check Current State

bash
# Test configuration syntax
nginx -t
# Check Nginx status
systemctl status nginx
# View error logs
tail -f /var/log/nginx/error.log

Step 2: Identify Root Cause

bash
# Check Nginx configuration
cat /etc/nginx/nginx.conf
# Verify upstream endpoints
curl -v http://backend:8080
# Check SSL certificates
ls -la /etc/nginx/ssl/

Step 3: Apply Primary Fix

```bash # Primary fix: Test and fix configuration # Validate configuration nginx -t

# Fix syntax errors vim /etc/nginx/nginx.conf

# Restart Nginx systemctl restart nginx ```

Step 4: Apply Alternative Fix

bash
# Alternative: Check upstream and logs
# Check upstream status
curl -I http://backend:8080/health
# View detailed logs
tail -100 /var/log/nginx/error.log
# Check open connections
ss -tnp | grep nginx

Step 5: Verify the Fix

bash
nginx -t && systemctl status nginx
# Should show "syntax is ok" and "active (running)"
curl -I http://localhost:80

Common Pitfalls

  • Not testing configuration before reloading
  • Using incorrect upstream port or address
  • Forgetting to update SSL certificates before expiry
  • Not handling rate limiting properly

Best Practices

  • Always run nginx -t before reloading
  • Use upstream health checks for reliability
  • Monitor Nginx error logs continuously
  • Set appropriate timeouts for upstreams
  • Nginx 502 Bad Gateway
  • Nginx SSL Certificate Error
  • Nginx Configuration Invalid
  • Nginx Upstream Timeout