- Prefijo v2: MCH - TRACEABILITY-MASTER.yml creado - Listo para integracion como submodulo Workspace: v2.0.0 | SIMCO: v4.0.0
123 lines
3.5 KiB
Plaintext
123 lines
3.5 KiB
Plaintext
# =============================================================================
|
|
# MiChangarrito - Nginx Server Configuration
|
|
# =============================================================================
|
|
|
|
# Upstream definitions
|
|
upstream backend {
|
|
server backend:3141;
|
|
keepalive 32;
|
|
}
|
|
|
|
upstream frontend {
|
|
server frontend:80;
|
|
keepalive 32;
|
|
}
|
|
|
|
upstream whatsapp {
|
|
server whatsapp-service:3143;
|
|
keepalive 32;
|
|
}
|
|
|
|
# HTTP server (redirect to HTTPS in production)
|
|
server {
|
|
listen 80;
|
|
server_name _;
|
|
|
|
# Health check (always available)
|
|
location /nginx-health {
|
|
access_log off;
|
|
return 200 "healthy\n";
|
|
add_header Content-Type text/plain;
|
|
}
|
|
|
|
# Let's Encrypt challenge
|
|
location /.well-known/acme-challenge/ {
|
|
root /var/www/certbot;
|
|
}
|
|
|
|
# In development, serve directly
|
|
# In production, uncomment the redirect below
|
|
# return 301 https://$host$request_uri;
|
|
|
|
# Frontend (web app)
|
|
location / {
|
|
proxy_pass http://frontend;
|
|
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;
|
|
proxy_cache_bypass $http_upgrade;
|
|
}
|
|
|
|
# Backend API
|
|
location /api/ {
|
|
limit_req zone=api burst=20 nodelay;
|
|
|
|
proxy_pass http://backend;
|
|
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;
|
|
proxy_cache_bypass $http_upgrade;
|
|
|
|
# Timeouts for API
|
|
proxy_connect_timeout 60s;
|
|
proxy_send_timeout 60s;
|
|
proxy_read_timeout 60s;
|
|
}
|
|
|
|
# WhatsApp Webhook
|
|
location /webhook/ {
|
|
limit_req zone=webhook burst=50 nodelay;
|
|
|
|
proxy_pass http://whatsapp;
|
|
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;
|
|
|
|
# WhatsApp may send large payloads
|
|
client_max_body_size 10M;
|
|
}
|
|
|
|
# Stripe Webhook
|
|
location /billing/webhooks {
|
|
proxy_pass http://backend;
|
|
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;
|
|
|
|
# Important: preserve raw body for Stripe signature verification
|
|
proxy_set_header Stripe-Signature $http_stripe_signature;
|
|
}
|
|
}
|
|
|
|
# HTTPS server (uncomment for production with SSL)
|
|
# server {
|
|
# listen 443 ssl http2;
|
|
# server_name michangarrito.com;
|
|
#
|
|
# ssl_certificate /etc/nginx/ssl/fullchain.pem;
|
|
# ssl_certificate_key /etc/nginx/ssl/privkey.pem;
|
|
# ssl_session_timeout 1d;
|
|
# ssl_session_cache shared:SSL:50m;
|
|
# ssl_session_tickets off;
|
|
#
|
|
# ssl_protocols TLSv1.2 TLSv1.3;
|
|
# ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
|
|
# ssl_prefer_server_ciphers off;
|
|
#
|
|
# add_header Strict-Transport-Security "max-age=63072000" always;
|
|
#
|
|
# # Same location blocks as HTTP server above...
|
|
# }
|