更新README文档,增加项目说明、使用方法、伪静态配置、参数说明、安全特性、性能优化、文件说明、错误处理和注意事项部分,使用图标增强可读性。
This commit is contained in:
parent
39d21d3a6a
commit
6919ecb650
31
LICENSE
Normal file
31
LICENSE
Normal file
@ -0,0 +1,31 @@
|
||||
MIT License with Attribution Requirement
|
||||
|
||||
Copyright (c) 2025 ImageProxy SnowZ
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software for non-commercial purposes, subject to the following conditions:
|
||||
|
||||
1. The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
2. Any commercial use of this Software must be explicitly authorized by the
|
||||
copyright holder and must include proper attribution to the original author.
|
||||
|
||||
3. The Software may be used for commercial purposes only if:
|
||||
a) Written permission is obtained from the copyright holder
|
||||
b) The original author is properly credited
|
||||
c) A link to the original repository is included in the project documentation
|
||||
|
||||
4. The Software may be used for non-commercial purposes without explicit
|
||||
permission, but must still include proper attribution.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
For commercial use inquiries, please contact the copyright holder.
|
205
README.md
205
README.md
@ -1,12 +1,14 @@
|
||||
# 图片代理与缓存系统
|
||||
# 🖼️ 图片代理与缓存系统
|
||||
|
||||
这是一个用于代理和缓存远程图片的系统,主要功能包括:
|
||||
|
||||
1. 图片代理:通过URL参数获取远程图片并返回
|
||||
2. 图片缓存:自动缓存已访问的图片,提高访问速度
|
||||
3. 防盗链支持:支持设置Referer,解决部分网站的防盗链问题
|
||||
1. 🔄 图片代理:通过URL参数获取远程图片并返回
|
||||
2. 💾 图片缓存:自动缓存已访问的图片,提高访问速度
|
||||
3. 🔒 防盗链支持:支持设置Referer,解决部分网站的防盗链问题
|
||||
|
||||
## 使用方法
|
||||
> 📝 项目说明:本项目是基于 `img.php` 的二次开发版本,增加了更多功能和安全性改进。
|
||||
|
||||
## 🚀 使用方法
|
||||
|
||||
在浏览器中访问:
|
||||
```
|
||||
@ -18,94 +20,7 @@
|
||||
/image/https://example.com/image.jpg
|
||||
```
|
||||
|
||||
## 参数说明
|
||||
|
||||
- url: 必填参数,需要代理的远程图片URL
|
||||
|
||||
## 技术特点
|
||||
|
||||
- 支持多种图片格式(GIF、JPEG、PNG、WebP、BMP、SVG)
|
||||
- 自动创建缓存目录结构
|
||||
- 支持HTTPS图片获取
|
||||
- 自动处理重定向
|
||||
- 合理的超时设置
|
||||
- 完善的错误处理和日志记录
|
||||
- 图片数据验证
|
||||
- 缓存过期控制
|
||||
|
||||
## 安全特性
|
||||
|
||||
- 输入验证:确保URL以http或https开头
|
||||
- 文件类型验证:只允许特定图片格式
|
||||
- 目录权限控制:缓存目录权限设置
|
||||
- SSL验证:支持HTTPS图片获取
|
||||
- 图片数据验证:验证下载的图片数据是否有效
|
||||
- 错误处理:完善的错误处理和日志记录
|
||||
- 域名白名单:支持配置允许访问的域名列表,防止服务被滥用
|
||||
|
||||
## 性能优化
|
||||
|
||||
- 图片缓存机制:24小时缓存
|
||||
- 合理的超时设置
|
||||
- 内存使用优化
|
||||
- 并发处理能力
|
||||
- 缓存控制头:支持浏览器缓存
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `index.php`: 入口文件,处理请求
|
||||
- `ImageProxy.php`: 核心类文件,实现图片代理和缓存功能
|
||||
- `cache/`: 缓存目录
|
||||
- `cache/logs/`: 日志目录
|
||||
|
||||
## 配置说明
|
||||
|
||||
可以通过修改`index.php`中的配置参数来调整系统行为:
|
||||
|
||||
```php
|
||||
$proxy = new ImageProxy([
|
||||
'cache_dir' => 'cache', // 缓存目录
|
||||
'timeout' => 30, // 请求超时时间(秒)
|
||||
'connect_timeout' => 15, // 连接超时时间(秒)
|
||||
'max_redirects' => 5, // 最大重定向次数
|
||||
'allowed_domains' => [ // 允许访问的域名白名单
|
||||
'example.com',
|
||||
'trusted-site.com',
|
||||
'images.example.org'
|
||||
// 添加更多允许的域名
|
||||
]
|
||||
]);
|
||||
```
|
||||
|
||||
白名单配置说明:
|
||||
- 如果 `allowed_domains` 为空数组,则允许访问所有域名
|
||||
- 支持精确域名匹配(如 `example.com`)
|
||||
- 支持子域名匹配(如 `images.example.com` 会匹配 `example.com`)
|
||||
- 域名比较不区分大小写
|
||||
- 不在白名单中的域名请求将被拒绝,并记录到日志中
|
||||
|
||||
## 错误处理
|
||||
|
||||
系统会自动记录所有错误到日志文件中,日志文件位于`cache/logs/`目录下,按日期命名。系统实现了自动日志轮转功能:
|
||||
|
||||
- 单个日志文件大小限制:10MB
|
||||
- 日志文件保留时间:30天
|
||||
- 最大保留日志文件数:10个
|
||||
- 自动清理过期日志
|
||||
- 自动轮转超大日志文件
|
||||
|
||||
日志文件命名规则:
|
||||
- 当前日志:`YYYY-MM-DD.log`
|
||||
- 轮转后的日志:`YYYY-MM-DD.log.YYYY-MM-DD_HH-mm-ss`
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 确保服务器有足够的磁盘空间用于缓存
|
||||
2. 确保缓存目录有写入权限
|
||||
3. 建议定期清理缓存文件
|
||||
4. 日志系统会自动管理日志文件大小和数量,无需手动干预
|
||||
|
||||
## 伪静态配置
|
||||
## ⚙️ 伪静态配置
|
||||
|
||||
### Apache 配置
|
||||
在网站根目录创建或编辑 `.htaccess` 文件:
|
||||
@ -135,4 +50,106 @@ location / {
|
||||
return 403;
|
||||
}
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
## 📋 参数说明
|
||||
|
||||
- url: 必填参数,需要代理的远程图片URL
|
||||
|
||||
## 💡 技术特点
|
||||
|
||||
- 🖼️ 支持多种图片格式(GIF、JPEG、PNG、WebP、BMP、SVG)
|
||||
- 📁 自动创建缓存目录结构
|
||||
- 🔐 支持HTTPS图片获取
|
||||
- 🔄 自动处理重定向
|
||||
- ⏱️ 合理的超时设置
|
||||
- 📝 完善的错误处理和日志记录
|
||||
- ✅ 图片数据验证
|
||||
- ⏳ 缓存过期控制
|
||||
|
||||
## 🛡️ 安全特性
|
||||
|
||||
- 🔍 输入验证:确保URL以http或https开头
|
||||
- 📝 文件类型验证:只允许特定图片格式
|
||||
- 🔒 目录权限控制:缓存目录权限设置
|
||||
- 🔐 SSL验证:支持HTTPS图片获取
|
||||
- ✅ 图片数据验证:验证下载的图片数据是否有效
|
||||
- 📝 错误处理:完善的错误处理和日志记录
|
||||
- 🚫 域名白名单:支持配置允许访问的域名列表,防止服务被滥用
|
||||
|
||||
## ⚡ 性能优化
|
||||
|
||||
- 💾 图片缓存机制:24小时缓存
|
||||
- ⏱️ 合理的超时设置
|
||||
- 💪 内存使用优化
|
||||
- 🔄 并发处理能力
|
||||
- 🌐 缓存控制头:支持浏览器缓存
|
||||
|
||||
## 📁 文件说明
|
||||
|
||||
- `index.php`: 入口文件,处理请求
|
||||
- `ImageProxy.php`: 核心类文件,实现图片代理和缓存功能
|
||||
- `img.php`: 原始项目文件,本项目基于此进行二次开发
|
||||
- `cache/`: 缓存目录
|
||||
- `cache/logs/`: 日志目录
|
||||
|
||||
## ⚙️ 配置说明
|
||||
|
||||
可以通过修改`index.php`中的配置参数来调整系统行为:
|
||||
|
||||
```php
|
||||
$proxy = new ImageProxy([
|
||||
'cache_dir' => 'cache', // 缓存目录
|
||||
'timeout' => 30, // 请求超时时间(秒)
|
||||
'connect_timeout' => 15, // 连接超时时间(秒)
|
||||
'max_redirects' => 5, // 最大重定向次数
|
||||
'allowed_domains' => [ // 允许访问的域名白名单
|
||||
'example.com',
|
||||
'trusted-site.com',
|
||||
'images.example.org'
|
||||
// 添加更多允许的域名
|
||||
]
|
||||
]);
|
||||
```
|
||||
|
||||
白名单配置说明:
|
||||
- 如果 `allowed_domains` 为空数组,则允许访问所有域名
|
||||
- 支持精确域名匹配(如 `example.com`)
|
||||
- 支持子域名匹配(如 `images.example.com` 会匹配 `example.com`)
|
||||
- 域名比较不区分大小写
|
||||
- 不在白名单中的域名请求将被拒绝,并记录到日志中
|
||||
|
||||
## 📝 错误处理
|
||||
|
||||
系统会自动记录所有错误到日志文件中,日志文件位于`cache/logs/`目录下,按日期命名。系统实现了自动日志轮转功能:
|
||||
|
||||
- 📊 单个日志文件大小限制:10MB
|
||||
- ⏳ 日志文件保留时间:30天
|
||||
- 📚 最大保留日志文件数:10个
|
||||
- 🧹 自动清理过期日志
|
||||
- 🔄 自动轮转超大日志文件
|
||||
|
||||
日志文件命名规则:
|
||||
- 当前日志:`YYYY-MM-DD.log`
|
||||
- 轮转后的日志:`YYYY-MM-DD.log.YYYY-MM-DD_HH-mm-ss`
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
1. 💾 确保服务器有足够的磁盘空间用于缓存
|
||||
2. 🔒 确保缓存目录有写入权限
|
||||
3. 🧹 建议定期清理缓存文件
|
||||
4. 📝 日志系统会自动管理日志文件大小和数量,无需手动干预
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
本项目采用 MIT License with Attribution Requirement 许可证。详情请查看 [LICENSE](LICENSE) 文件。
|
||||
|
||||
主要条款:
|
||||
- ✅ 允许非商业用途自由使用
|
||||
- 🔒 商业用途需要获得授权
|
||||
- 📝 使用时必须注明原作者
|
||||
- 🔗 商业使用时必须包含原仓库链接
|
||||
|
||||
## 📧 联系方式
|
||||
|
||||
如需商业使用授权,请联系仓库所有者。
|
Loading…
x
Reference in New Issue
Block a user