Skip to main content
Glama
nginx.conf10.6 kB
# ============================================================================= # Nginx optimizado para Claude Conversation Logger # Incluye compresión gzip, caché estático y optimizaciones de performance # ============================================================================= # Configuración del servidor principal server { listen 80 default_server; listen [::]:80 default_server; server_name _; # Configuración de logs optimizada access_log /var/log/nginx/access.log combined buffer=16k flush=1m; error_log /var/log/nginx/error.log warn; # Configuración de seguridad básica server_tokens off; add_header X-Frame-Options DENY always; add_header X-Content-Type-Options nosniff always; add_header X-XSS-Protection "1; mode=block" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; # Configuración de timeouts optimizada client_max_body_size 10M; client_body_timeout 12; client_header_timeout 12; keepalive_timeout 65; send_timeout 10; # Configuración de buffers optimizada client_body_buffer_size 128k; client_header_buffer_size 1k; large_client_header_buffers 4 4k; output_buffers 1 32k; postpone_output 1460; # ============================================================================= # COMPRESIÓN GZIP OPTIMIZADA # ============================================================================= # Habilitar compresión gzip gzip on; gzip_vary on; gzip_min_length 1024; gzip_comp_level 6; gzip_proxied any; gzip_buffers 16 8k; gzip_http_version 1.1; # Tipos de archivo para comprimir gzip_types application/atom+xml application/geo+json application/javascript application/x-javascript application/json application/ld+json application/manifest+json application/rdf+xml application/rss+xml application/xhtml+xml application/xml font/eot font/otf font/ttf image/svg+xml text/css text/javascript text/plain text/xml; # ============================================================================= # CONFIGURACIÓN DE CACHÉ ESTÁTICO # ============================================================================= # Caché para archivos estáticos (imágenes, CSS, JS) location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { expires 1y; add_header Cache-Control "public, immutable"; add_header Vary "Accept-Encoding"; # Logging reducido para archivos estáticos access_log off; # Configuración de CORS para assets add_header Access-Control-Allow-Origin "*" always; add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always; add_header Access-Control-Allow-Headers "Range" always; # Manejo de archivos no encontrados try_files $uri $uri/ =404; } # Caché para archivos de Vue.js y librerías location ~* ^/src/dashboard/assets/.*\.(js|css)$ { expires 6M; add_header Cache-Control "public, immutable"; add_header Vary "Accept-Encoding"; access_log off; # Cabeceras específicas para JavaScript add_header Content-Type "application/javascript; charset=utf-8"; try_files $uri $uri/ =404; } # Caché para documentos HTML location ~* \.(html|htm)$ { expires 1h; add_header Cache-Control "public, must-revalidate"; add_header Vary "Accept-Encoding"; } # ============================================================================= # RUTAS DE LA APLICACIÓN # ============================================================================= # Dashboard principal location / { root /app/src/dashboard; index index.html; # Configuración de caché para HTML principal expires 10m; add_header Cache-Control "public, must-revalidate"; # Fallback para SPA try_files $uri $uri/ /index.html; } # API Backend - Proxy hacia Node.js location /api/ { # Configuración de proxy proxy_pass http://localhost:3003; 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_set_header X-Forwarded-Host $server_name; # Configuración de timeouts para API proxy_connect_timeout 5s; proxy_send_timeout 60s; proxy_read_timeout 60s; # Configuración de buffers proxy_buffering on; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; # Caché para respuestas de API (solo GET) proxy_cache_methods GET HEAD; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; # Headers para no caché en API crítica add_header Cache-Control "no-cache, no-store, must-revalidate" always; add_header Pragma "no-cache" always; add_header Expires "0" always; } # Health check endpoint location /health { proxy_pass http://localhost:3003/health; proxy_http_version 1.1; proxy_set_header Connection ""; # Configuración optimizada para health checks proxy_connect_timeout 1s; proxy_send_timeout 1s; proxy_read_timeout 1s; # Sin caché para health checks add_header Cache-Control "no-cache, no-store, must-revalidate" always; access_log off; } # WebSocket para tiempo real (si se implementa) location /socket.io/ { proxy_pass http://localhost:3003; 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; # Configuración específica para WebSockets proxy_cache off; proxy_buffering off; proxy_read_timeout 86400s; proxy_send_timeout 86400s; } # ============================================================================= # OPTIMIZACIONES DE RENDIMIENTO # ============================================================================= # Caché para favicons location = /favicon.ico { expires 1y; add_header Cache-Control "public, immutable"; access_log off; try_files $uri =204; } # Robots.txt location = /robots.txt { expires 1d; add_header Cache-Control "public"; access_log off; try_files $uri =204; } # Bloquear acceso a archivos de configuración location ~ /\.(ht|env|git) { deny all; return 404; } # Bloquear acceso a archivos de backup location ~ ~$ { deny all; return 404; } # ============================================================================= # CONFIGURACIÓN DE LOGS ESTRUCTURADOS # ============================================================================= # Formato de log JSON para mejor análisis log_format json_combined escape=json '{' '"time_local":"$time_local",' '"remote_addr":"$remote_addr",' '"remote_user":"$remote_user",' '"request":"$request",' '"status":"$status",' '"body_bytes_sent":"$body_bytes_sent",' '"request_time":"$request_time",' '"http_referrer":"$http_referer",' '"http_user_agent":"$http_user_agent",' '"http_x_forwarded_for":"$http_x_forwarded_for",' '"upstream_response_time":"$upstream_response_time",' '"upstream_addr":"$upstream_addr"' '}'; # Aplicar log estructurado para rutas de API location /api/stats { proxy_pass http://localhost:3003; access_log /var/log/nginx/api_access.log json_combined; # Configuración de proxy estándar 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; } } # ============================================================================= # CONFIGURACIÓN GLOBAL DE NGINX # ============================================================================= # Configuración de worker processes (se ajusta automáticamente) worker_processes auto; worker_rlimit_nofile 65535; # Configuración de eventos optimizada events { worker_connections 1024; use epoll; multi_accept on; } # Configuración HTTP global http { # Tipos MIME optimizados include /etc/nginx/mime.types; default_type application/octet-stream; # Configuración de charset charset utf-8; # Optimizaciones de red sendfile on; tcp_nopush on; tcp_nodelay on; # Configuración de hash tables types_hash_max_size 2048; server_names_hash_bucket_size 64; # Rate limiting global limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s; limit_req_zone $binary_remote_addr zone=general:10m rate=5r/s; # Aplicar rate limiting limit_req zone=general burst=20 nodelay; } # ============================================================================= # Optimizaciones aplicadas: # # 1. Compresión gzip: Reduce transferencia de datos hasta 70% # 2. Caché estático: Assets con expiración de 1 año # 3. Proxy buffering: Optimización de backend requests # 4. Rate limiting: Protección contra abuse # 5. Headers de seguridad: XSS, frame injection, etc. # 6. Logs estructurados: JSON para mejor análisis # 7. Timeouts optimizados: Balance entre UX y recursos # 8. WebSocket ready: Preparado para tiempo real # # Performance esperado: 50-70% mejora en tiempo de carga # =============================================================================

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LucianoRicardo737/claude-conversation-logger'

If you have feedback or need assistance with the MCP directory API, please join our Discord server