# Development Configuration - Maternal App # Domains: maternal.noru1.ro (frontend), maternal-api.noru1.ro (backend) # Frontend - maternal.noru1.ro (port 3005) server { listen 80; listen [::]:80; server_name maternal.noru1.ro; # Logging access_log /var/log/nginx/maternal-dev.access.log main; error_log /var/log/nginx/maternal-dev.error.log warn; # Proxy to development frontend (port 3005) location / { proxy_pass http://host.docker.internal:3005; proxy_http_version 1.1; # Headers 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; # WebSocket support for Next.js HMR proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Development timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; } # Next.js HMR WebSocket location /_next/webpack-hmr { proxy_pass http://host.docker.internal:3005; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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; } } # API Backend - maternal-api.noru1.ro (port 3015) server { listen 80; listen [::]:80; server_name maternal-api.noru1.ro; # Logging access_log /var/log/nginx/maternal-api-dev.access.log main; error_log /var/log/nginx/maternal-api-dev.error.log warn; # CORS headers for development add_header Access-Control-Allow-Origin "https://maternal.noru1.ro" always; add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS, PATCH" always; add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization" always; add_header Access-Control-Allow-Credentials "true" always; # Handle preflight requests location / { if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin "https://maternal.noru1.ro" always; add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS, PATCH" always; add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization" always; add_header Access-Control-Allow-Credentials "true" always; add_header Access-Control-Max-Age 86400; add_header Content-Type text/plain; add_header Content-Length 0; return 204; } # Proxy to development backend (port 3015) proxy_pass http://host.docker.internal:3015; proxy_http_version 1.1; # Headers 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; # Development timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; # Buffering proxy_buffering off; proxy_request_buffering off; } # WebSocket support for real-time features location /ws { proxy_pass http://host.docker.internal:3015; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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; # WebSocket timeouts proxy_connect_timeout 7d; proxy_send_timeout 7d; proxy_read_timeout 7d; } # GraphQL endpoint location /graphql { proxy_pass http://host.docker.internal:3015; proxy_http_version 1.1; 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; # Larger timeouts for GraphQL proxy_connect_timeout 120s; proxy_send_timeout 120s; proxy_read_timeout 120s; } # Health check endpoint location /health { proxy_pass http://host.docker.internal:3015; access_log off; } }