公开访问(/raw)
概述
/raw 应用提供无需认证的文件公开读取服务,适合 CDN 回源、图片展示、静态资源分发等场景。
路由格式
GET /raw/{space}/{path}
示例:
http://localhost:8002/raw/default/photos/cat.jpg
http://localhost:8002/raw/default/docs/readme.pdf
空间管理
空间概念
空间(Space)是公开访问的隔离单元,每个空间有独立的访问策略和回源配置。
| 字段 | 说明 |
|---|---|
uid |
空间标识(URL 中使用,如 default) |
access_policy |
public(匿名访问)/ private(需签名)/ locked(禁止访问) |
upstream_url |
回源 URL(本地未命中时透传至远端) |
默认空间
系统初始化时自动创建 default 空间(access_policy=public)。
配置
管理后台或脚本管理空间。开源版默认单空间,storage_path.space_id 默认指向 default 空间。
预签名 URL(W7-K1)
生成方式
# CLI 生成(默认 1 小时有效)
docker exec uldisk-dev-uldisk-1 php think raw:presign --path=/photos/cat.jpg
# 自定义有效期(秒)
docker exec uldisk-dev-uldisk-1 php think raw:presign --path=/photos/cat.jpg --ttl=3600
签名机制
- HMAC-SHA256 签名
- 参数:
expires(过期时间戳)+sig(签名) - 配合
raw.enforce_presign=1可强制所有访问必须带签名
private 空间访问
access_policy=private 的空间必须带有效签名才能访问。
中间件链
请求经过 4 层中间件(按顺序):
1. PresignedUrl(签名校验)
检查 access_policy,private 空间强制签名验证。
2. RateLimit(限流)
| 配置项 | 说明 |
|---|---|
raw.rate_limit_per_ip_rpm |
每 IP 每分钟请求数 |
raw.rate_limit_per_file_rpm |
每文件每分钟请求数 |
raw.bandwidth_limit_mbps |
带宽上限 Mbps |
基于 APCu 共享内存。APCu 不可用时 fail-closed(拒绝不降级)。
3. IpRestriction(IP 限制)
raw.ip_whitelist = 10.0.0.0/8,192.168.1.0/24
raw.ip_blacklist = 1.2.3.4
支持 CIDR 表示法。白名单优先于黑名单。
4. AntiLeak(防盗链)
anti_leek.enabled = 1
anti_leek.allowed_referers = https://mysite.com,https://app.mysite.com
- Referer 不在白名单 → 403
- 空 Referer:
anti_leek.allow_empty_referer=1时放行(默认),0 时拒绝
CORS 跨域
raw.cors_allowed_origins = https://mysite.com,https://app.mysite.com
- OPTIONS 预检请求自动响应 CORS 头
- 实际 GET 请求带
Access-Control-Allow-Origin回显匹配的 Origin - 同源请求(无 Origin 头)不加 CORS 头
回源(Upstream)
空间配置 upstream_url 后,本地未命中的文件自动从远端拉取并缓存:
GET /raw/default/remote-file.txt
→ 本地未命中
→ 透传 GET {upstream_url}/remote-file.txt
→ 缓存到本地
→ 返回给客户端
适合多级 CDN 缓存场景。
Range 支持
支持 HTTP Range 请求(部分内容):
GET /raw/default/large.bin
Range: bytes=0-99
→ 206 Partial Content
→ Content-Range: bytes 0-99/10485760
安全限制
- 路径遍历(
../)被阻止 - 目录访问返回 404(非 403,防信息泄露)
- 仅允许 GET / HEAD 方法
原文标题:公开访问
原文文档:uldisk
原文地址:/read/augushong/ul-disk/zh-cn/1.0.0/6a3e73c598601/6a3e73d866185.html
原文平台:奥宏文档
1.0.0