反向代理¶
LANCache Manager 可以在 nginx 后面正常运行。建议使用 HTTPS。
Tip
在管理器前面架设了代理?记得同时设置 Security__KnownProxyNetworks(见安全),这样客户端 IP 才能被正确报告。
单一来源(推荐)¶
从同一个主机名同时提供 UI 和 API。Cookie 保持第一方,CORS 也就不成问题。
server {
listen 443 ssl http2;
server_name lancache.example.com;
ssl_certificate /etc/letsencrypt/live/lancache.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/lancache.example.com/privkey.pem;
# 请求体大小上限——如果大文件上传(比如数据库导入)返回 413,就调高此值
client_max_body_size 50m;
location / {
proxy_pass http://127.0.0.1:8080;
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;
proxy_set_header X-Forwarded-Host $host;
# SignalR(WebSocket)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s; # 为缓慢时段留出余量;SignalR 每 10 秒的保活消息通常足以让连接保持存活
}
}
server {
listen 80;
server_name lancache.example.com;
return 301 https://$host$request_uri;
}
分离的 API 来源(仅在必要时使用)¶
如果 UI 和 API 位于不同的主机名:
- 用
VITE_API_URL=https://api.lancache.example.com构建 UI。 - 把 UI 来源加入
Security__AllowedOrigins,让 CORS 允许它携带凭据。 - 让两个主机名保持在同一个可注册域名之下(如本例所示)。LANCache Manager 签发的是
SameSite=LaxCookie,浏览器只在两个主机名同属一个站点时才会发送这类 Cookie——API 位于完全不同的域名时无法使用 Cookie 登录。
server {
listen 443 ssl http2;
server_name api.lancache.example.com;
ssl_certificate /etc/letsencrypt/live/api.lancache.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.lancache.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
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;
proxy_set_header X-Forwarded-Host $host;
# SignalR(WebSocket)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s; # 为缓慢时段留出余量;SignalR 每 10 秒的保活消息通常足以让连接保持存活
}
}