Files
portfolio/nginx-zero-downtime.conf
denshooter 3dbe80edcc
Some checks failed
CI/CD Pipeline (Fast) / production (push) Failing after 5m10s
CI/CD Pipeline (Zero Downtime) / production (push) Failing after 7m53s
CI/CD Pipeline (Simple) / production (push) Failing after 9m14s
🔧 Fix zero-downtime deployment issues
- Fix Dockerfile standalone build path from /app/.next/standalone/gitea/portfolio to /app/.next/standalone/app
- Fix nginx configuration by removing conflicting server blocks
- Consolidate health check and main proxy into single server block
- Ensure proper load balancing between portfolio-app-1 and portfolio-app-2

 Deployment now working successfully with:
- Application running on both instances (healthy)
- Database and Redis running (healthy)
- Nginx load balancer working
- Health endpoints accessible
- Main portfolio site accessible at http://localhost/
2025-09-13 22:31:39 +02:00

57 lines
1.5 KiB
Plaintext

events {
worker_connections 1024;
}
http {
upstream portfolio_backend {
# Health check enabled upstream
server portfolio-app-1:3000 max_fails=3 fail_timeout=30s;
server portfolio-app-2:3000 max_fails=3 fail_timeout=30s;
}
# Main server
server {
listen 80;
server_name _;
# Proxy settings
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Timeout settings
proxy_connect_timeout 5s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# Buffer settings
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
# Health check endpoint
location /health {
access_log off;
return 200 "healthy\n";
add_header Content-Type text/plain;
}
# Main location
location / {
proxy_pass http://portfolio_backend;
# Health check for upstream
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_next_upstream_tries 2;
proxy_next_upstream_timeout 10s;
}
# Static files caching
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
proxy_pass http://portfolio_backend;
expires 1y;
add_header Cache-Control "public, immutable";
}
}
}