公开访问(/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