Files
TIP/nginx/nginx.conf_example
2026-06-09 21:18:13 -03:00

104 lines
3.0 KiB
Plaintext

events {
worker_connections 1024;
}
http {
# Upstreams
upstream frontend {
server frontend:8501;
}
upstream api {
server api:8000;
}
upstream api_users {
server api_users:8090;
}
# Redirección HTTP -> HTTPS
server {
listen 80;
server_name localhost; # Cambiar por tu dominio
return 301 https://$host$request_uri;
}
# Servidor HTTPS
server {
listen 443 ssl;
server_name localhost; # Cambiar por tu dominio
# Certificados SSL
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
# Configuración SSL robusta (recomendada)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# Headers de seguridad
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
# Frontend (Streamlit) - ruta raíz
location / {
proxy_pass http://frontend;
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;
# Soporte WebSocket (Streamlit)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Timeouts
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# API Feeder (FastAPI en puerto 8000)
location /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://api;
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;
# Timeouts
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# API Usuarios (FastAPI en puerto 8090)
location /users/ {
rewrite ^/users/(.*)$ /$1 break;
proxy_pass http://api_users;
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;
# Timeouts
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# Opcional: estado de Nginx
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
}