
patrickdk/s3-proxy多架构构建支持。
这是一个AWS S3反向代理工具,支持基本认证功能,无需将S3存储桶配置为“网站托管”模式即可使用。
URL映射示例:[***] -> s3://bucket/access/index.html
以下是所有可用环境变量的详细说明:
| 环境变量 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|
| AWS_S3_BUCKET | 要代理的S3存储桶名称 | * | - |
| AWS_S3_KEY_PREFIX | S3对象键前缀 | 否 | - |
| AWS_REGION | S3存储桶所在的AWS区域 | 否 | us-east-1 |
| AWS_ACCESS_KEY_ID | 用于API访问的AWS访问密钥 | 否 | EC2实例角色 |
| AWS_SECRET_ACCESS_KEY | 用于API访问的AWS密钥 | 否 | EC2实例角色 |
| AWS_API_ENDPOINT | 本地开发用的AWS API端点 | 否 | - |
| INDEX_DOCUMENT | 索引文档名称 | 否 | index.html |
| DIRECTORY_LISTINGS | 当URL以/结尾时列出文件 | 否 | false |
| DIRECTORY_LISTINGS_FORMAT | 目录列表格式:html(可被爬虫解析)、shtml(与pip兼容)或apache(Apache风格) | 否 | - |
| DIRECTORY_LISTINGS_CHECK_INDEX | 列出文件前检查目录中是否存在INDEX_DOCUMENT | 否 | false |
| HTTP_CACHE_CONTROL | 覆盖S3的HTTP Cache-Control响应头 | 否 | S3对象元数据 |
| HTTP_EXPIRES | 覆盖S3的HTTP Expires响应头 | 否 | S3对象元数据 |
| BASIC_AUTH_USER | 基本认证用户名(空格分隔的列表) | 否 | - |
| BASIC_AUTH_PASS | 基本认证密码(空格分隔的列表) | 否 | - |
| SSL_CERT_PATH | TLS证书文件路径(cert.pem) | 否 | - |
| SSL_KEY_PATH | TLS密钥文件路径(key.pem) | 否 | - |
| CORS_ALLOW_ORIGIN | CORS:允许访问资源的URI | 否 | - |
| CORS_ALLOW_METHODS | CORS:允许的HTTP请求方法(逗号分隔列表) | 否 | - |
| CORS_ALLOW_HEADERS | CORS:支持的请求头(逗号分隔列表) | 否 | - |
| CORS_MAX_AGE | CORS:预检请求结果的最大缓存时间(秒) | 否 | 600 |
| APP_PORT | 服务监听端口 | 否 | 80 |
| APP_HOST | 服务监听主机 | 否 | 本地系统所有可用的单播和任播IP地址 |
| ACCESS_LOG | 将访问日志发送到/dev/stdout | 否 | false |
| FORWARDED_FOR | 用于解析代理IP地址的请求头名称 | 否 | - |
| STRIP_PATH | 要剥离的路径前缀 | 否 | - |
| CONTENT_ENCODING | 如果请求允许则压缩响应数据 | 否 | true |
| HEALTHCHECK_PATH | 指定时,该路径始终返回200 OK | 否 | /healthz |
| HEALTHCHECKER_PATH | Docker健康检查脚本使用的路径(如与HEALTHCHECK_PATH不同) | 否 | - |
| METRICS_PATH | Prometheus指标暴露路径 | 否 | - |
| VERSION_PATH | 代理版本信息路径 | 否 | - |
| GET_ALL_PAGES_IN_DIR | 如果为true,将多次调用以获取目标目录的所有分页内容 | 否 | false |
| MAX_IDLE_CONNECTIONS | 允许到S3存储的空闲连接数 | 否 | 150 |
| IDLE_CONNECTION_TIMEOUT | 到S3存储的连接超时时间(秒) | 否 | 10 |
| DISABLE_COMPRESSION | 如果为true,将原样传递编码内容 | 否 | true |
| INSECURE_TLS | 如果为true,将跳过证书检查 | 否 | false |
| JWT_SECRET_KEY | 用于验证请求的JSON Web Token密钥 | 否 | - |
| JWT_USER_FIELD | 日志中使用的JWT用户名字段 | 否 | - |
| JWT_HEADER | 要使用的JWT请求头(替代Authorization,如Cf-Access-Jwt-Assertion) | 否 | - |
| SPA | 单页应用模式:如果为true,服务器将在404错误时返回索引文档内容(类似nginx的try_files $uri $uri/ /index.html;) | 否 | false |
| WHITELIST_IP_RANGES | 逗号分隔的IP和IP范围列表 | 否 | - |
| CONTENT_TYPE | 覆盖默认的Content-Type响应头 | 否 | - |
| CONTENT_DISPOSITION | 覆盖默认的Content-Disposition响应头 | 否 | - |
| USERNAME_HEADER | 用户名头名称(如Cloudflare的Cf-Access-Authenticated-User-Email) | 否 | - |
| SORT | 文件列表排序方式(datedesc:日期降序,dateasc:日期升序,fileasc:文件名升序,filedesc:文件名降序) | 否 | fileasc |
bashdocker run -d -p 8080:80 -e AWS_REGION -e AWS_S3_BUCKET patrickdk/s3-proxy
bashdocker run -d -p 8080:80 -e AWS_REGION -e AWS_S3_BUCKET -e BASIC_AUTH_USER -e BASIC_AUTH_PASS patrickdk/s3-proxy
bashdocker run -d -p 8080:80 -e AWS_REGION -e AWS_S3_BUCKET -e SSL_CERT_PATH -e SSL_KEY_PATH patrickdk/s3-proxy
bashdocker run -d -p 8080:80 -e CORS_ALLOW_ORIGIN -e CORS_ALLOW_METHODS -e CORS_ALLOW_HEADERS -e CORS_MAX_AGE patrickdk/s3-proxy
yamlproxy: image: patrickdk/s3-proxy ports: - 8080:80 environment: - AWS_REGION=ap-northeast-1 - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_S3_BUCKET - BASIC_AUTH_USER=admin - BASIC_AUTH_PASS=password - ACCESS_LOG=true container_name: proxy
代码以MIT许可证发布。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务