TasteEngine / deploy /nginx.conf
Abdallah4z's picture
Production readiness: port 7860, Dockerfile, HF Spaces config
f9ade9b
server {
listen 80;
server_name tasteengine.example.com;
# Static files — served directly by nginx, Flask never touched
location /static/ {
alias /home/abdallah/recommender-project/TasteEngine/static/;
expires 7d;
add_header Cache-Control "public, immutable";
}
# Application proxy
location / {
proxy_pass http://127.0.0.1:5000;
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;
# CRITICAL: disable buffering for SSE/streaming endpoints (SVD evaluation)
proxy_buffering off;
proxy_cache off;
# Timeouts
proxy_connect_timeout 60s;
proxy_read_timeout 180s;
proxy_send_timeout 60s;
}
# Optional: rate limiting on recommendation API
location /api/recommend {
limit_req zone=recommend burst=5 nodelay;
proxy_pass http://127.0.0.1:5000;
}
# SSL (uncomment after running certbot)
# listen 443 ssl;
# ssl_certificate /etc/letsencrypt/live/tasteengine.example.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/tasteengine.example.com/privkey.pem;
}
# Rate limiting zone definition
limit_req_zone $binary_remote_addr zone=recommend:10m rate=10r/s;