user moviepilot; worker_processes auto; worker_cpu_affinity auto; events { worker_connections 1024; } http { # 设置缓存路径和缓存区大小 proxy_cache_path /tmp levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=60m use_temp_path=off; sendfile on; keepalive_timeout 3600; server { include /etc/nginx/mime.types; default_type application/octet-stream; listen ${NGINX_PORT}; listen [::]:${NGINX_PORT}; server_name moviepilot; location / { # 主目录 expires off; add_header Cache-Control "no-cache, no-store, must-revalidate"; root /public; try_files $uri $uri/ /index.html; } location /assets { # 静态资源 expires 7d; add_header Cache-Control "public"; root /public; } location /api/v1/site/icon/ { # 站点图标缓存 proxy_cache my_cache; # 缓存响应码为200和302的请求1小时 proxy_cache_valid 200 302 1h; # 缓存其他响应码的请求5分钟 proxy_cache_valid any 5m; # 缓存键的生成规则 proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; # 向后端API转发请求 proxy_pass http://backend_api; } location ~ ^/api/v1/system/(message|progress/) { # SSE MIME类型设置 default_type text/event-stream; # 禁用缓存 add_header Cache-Control no-cache; add_header X-Accel-Buffering no; proxy_buffering off; proxy_cache off; # 代理设置 proxy_pass http://backend_api; proxy_http_version 1.1; proxy_set_header Connection ""; 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_read_timeout 3600s; } location /api { # 后端API proxy_pass http://backend_api; rewrite ^.+mock-server/?(.*)$ /$1 break; proxy_http_version 1.1; proxy_buffering off; proxy_cache off; proxy_redirect off; proxy_set_header Connection ""; proxy_set_header Upgrade $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; # 超时设置 proxy_read_timeout 600s; } } upstream backend_api { # 后端API的地址和端口 server 127.0.0.1:${PORT}; # 可以添加更多后端服务器作为负载均衡 } }