- 即时上传:拖入文件后立刻上传 TOS,spinner/红色重试/禁用提交 - 音频校验:格式(MP3/WAV) + 时长[2,15.4]s + 总时长≤15.4s - 视频校验:格式(MP4/MOV) + 时长[2,15.4]s + 总时长≤15.4s - 后端 blob: URL 兜底拦截 + 音频错误文案优化 - 资产页:nginx 403 修复 + 倒序排列 + 加载更多按钮 - Toast:glass-card 毛玻璃风格 + 橙色感叹号图标 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
43 lines
1.3 KiB
Nginx Configuration File
43 lines
1.3 KiB
Nginx Configuration File
server_tokens off;
|
|
|
|
server {
|
|
listen 80;
|
|
server_name _;
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
# Security headers
|
|
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;
|
|
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
|
|
|
|
# API requests proxy to backend service
|
|
location /api/ {
|
|
proxy_pass http://video-backend:8000;
|
|
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_read_timeout 120s;
|
|
client_max_body_size 50m;
|
|
}
|
|
|
|
# SPA client-side routes — must return index.html, not match Vite's dist/assets/ dir
|
|
location ~ ^/(assets|login|profile|admin|team)(/|$) {
|
|
try_files /index.html =404;
|
|
}
|
|
|
|
# SPA fallback
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
|
|
# Cache static assets
|
|
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
|
|
expires 30d;
|
|
add_header Cache-Control "public, immutable";
|
|
}
|
|
}
|