Fix nginx configuration syntax errors
Some checks failed
CI/CD Pipeline (Fast) / production (push) Successful in 6m44s
CI/CD Pipeline (Simple & Reliable) / production (push) Has been cancelled
CI/CD Pipeline (Reliable & Simple) / production (push) Has been cancelled

- Move proxy_set_header directives inside location blocks
- Add DNS resolver for dynamic upstream resolution
- Improve fallback configuration in docker-compose
- Add config validation before starting nginx

This should resolve the nginx startup failures.
This commit is contained in:
2025-09-15 23:51:59 +02:00
parent 9c6b313435
commit efda383bd8
2 changed files with 34 additions and 18 deletions

View File

@@ -31,8 +31,11 @@ services:
# Remove default nginx configuration files to prevent conflicts
rm -rf /etc/nginx/conf.d/*
if [ ! -f /etc/nginx/nginx.conf ]; then
echo 'Creating fallback nginx configuration...'
# Test the main config first
if nginx -t -c /etc/nginx/nginx.conf 2>/dev/null; then
echo 'Using main nginx configuration'
else
echo 'Main config failed, creating fallback nginx configuration...'
cat > /etc/nginx/nginx.conf << 'EOF'
events {
worker_connections 1024;
@@ -56,6 +59,9 @@ services:
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;
proxy_connect_timeout 5s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
}

View File

@@ -9,11 +9,25 @@ http {
server portfolio-app-2:3000 max_fails=3 fail_timeout=30s;
}
# Resolver for dynamic upstream resolution
resolver 127.0.0.11 valid=10s;
# Main server
server {
listen 80;
server_name _;
# 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;
# Proxy settings
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
@@ -30,17 +44,6 @@ http {
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;
@@ -50,6 +53,13 @@ http {
# Static files caching
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
proxy_pass http://portfolio_backend;
# 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;
expires 1y;
add_header Cache-Control "public, immutable";
}