File size: 5,067 Bytes
9e1edfd 2b68a06 9e1edfd 2b68a06 9e1edfd e4c8301 9e1edfd e4c8301 9e1edfd c9732a0 6bd4abe 9e1edfd 2b68a06 eb469ad 9e1edfd eb469ad 70cbf15 be5ad7c eaaa414 be5ad7c d11db8f be5ad7c 22ba1d6 be5ad7c eaaa414 c9732a0 1ba240e c9732a0 6bd4abe eb469ad 9e1edfd 9290463 9e1edfd 2b68a06 9e1edfd 9290463 9e1edfd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
worker_processes 1;
pid /tmp/nginx.pid;
error_log stderr info; # Log to stderr to see errors in HF Space Logs
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# HF Space runs as non-root, use /tmp for everything
access_log /dev/stdout;
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
sendfile on;
keepalive_timeout 65;
upstream streamlit {
server 127.0.0.1:8501;
}
upstream fastapi {
server 127.0.0.1:8000;
}
upstream prometheus {
server 127.0.0.1:9090;
}
upstream alertmanager {
server 127.0.0.1:9093;
}
upstream pushgateway {
server 127.0.0.1:9091;
}
server {
listen 7860;
server_name localhost;
# Health endpoint for HF readiness check
location /health {
proxy_pass http://fastapi/health;
proxy_set_header Host $host;
}
# FastAPI Documentation
location /docs {
proxy_pass http://fastapi/docs;
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;
}
location /redoc {
proxy_pass http://fastapi/redoc;
proxy_set_header Host $host;
}
location /openapi.json {
proxy_pass http://fastapi/openapi.json;
proxy_set_header Host $host;
}
# FastAPI API Endpoints
location /predict {
proxy_pass http://fastapi/predict;
proxy_set_header Host $host;
}
location /predictions {
proxy_pass http://fastapi/predictions;
proxy_set_header Host $host;
}
# FastAPI Metrics endpoint for Prometheus
location /metrics {
proxy_pass http://fastapi/metrics;
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;
}
# Grafana
location = /grafana {
return 301 /grafana/;
}
location /grafana/ {
# Do NOT strip the path. explicit serve_from_sub_path=true in Grafana needs the prefix.
proxy_pass http://127.0.0.1:3000;
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 $host;
proxy_set_header X-Forwarded-Server $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# Prometheus UI
location = /prometheus {
return 301 /prometheus/;
}
# Prometheus UI
location /prometheus/ {
proxy_pass http://127.0.0.1:9090/prometheus/;
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;
}
# Alertmanager UI
location /alertmanager/ {
proxy_pass http://alertmanager;
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;
}
# Pushgateway UI
location /pushgateway/ {
proxy_pass http://pushgateway;
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;
}
# Streamlit (Catch-all)
location / {
proxy_pass http://streamlit;
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 $host;
# WebSocket support for Streamlit
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
# Prevent 502 if Streamlit is slow
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
}
}
}
|