File size: 2,427 Bytes
85fd14e
 
 
 
 
 
 
 
 
 
 
cb0e0e4
 
 
 
 
 
481214d
cb0e0e4
481214d
 
85fd14e
 
 
 
cb0e0e4
85fd14e
 
 
 
 
 
 
 
 
 
 
 
 
481214d
 
85fd14e
481214d
 
85fd14e
 
cb0e0e4
 
 
481214d
85fd14e
 
 
 
 
481214d
85fd14e
 
 
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
events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;

    sendfile on;
    keepalive_timeout 65;

    # Redirect Nginx logs to Docker's standard output/error streams
    error_log /dev/stderr info;
    access_log /dev/stdout combined;

    # Set writable paths for Nginx temporary files to avoid permission errors
    # These paths correspond to directories created and permissioned in your Dockerfile
    client_body_temp_path /tmp/nginx_cache/client_body;
    proxy_temp_path /tmp/nginx_cache/proxy;

    # Gzip settings for improved performance (optional but recommended)
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    server {
        listen 7860; # Hugging Face Spaces default port for Docker SDK
        server_name localhost;

        # Serve Streamlit app at the root (/)
        location / {
            proxy_pass http://localhost:8501; # Streamlit's default port
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            # Increase timeouts if Streamlit app takes long to load/respond or for large uploads
            proxy_read_timeout 300s;
            proxy_send_timeout 300s;
            # Allow larger file sizes if necessary, Nginx default is 1M. This is for requests proxied through Nginx.
            client_max_body_size 50M; # Adjust as needed for larger file uploads via Streamlit's internal mechanism
        }

        # This section is commented out as it's typically not needed for a Streamlit+Flask setup where
        # Streamlit calls Flask directly via localhost:5000.
        # If you needed to expose Flask publicly on a subpath, you'd uncomment and configure this.
        # location /api/ {
        #     proxy_pass http://localhost:5000/;
        #     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;
        #     client_max_body_size 50M; # Adjust for Flask API if it also handles uploads
        # }
    }
}