更新README文档,增加项目说明、使用方法、伪静态配置、参数说明、安全特性、性能优化、文件说明、错误处理和注意事项部分,使用图标增强可读性。

This commit is contained in:
Snowz 2025-05-28 02:11:02 +08:00
parent 39d21d3a6a
commit 6919ecb650
2 changed files with 142 additions and 94 deletions

31
LICENSE Normal file
View 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
View File

@ -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) 文件。
主要条款:
- ✅ 允许非商业用途自由使用
- 🔒 商业用途需要获得授权
- 📝 使用时必须注明原作者
- 🔗 商业使用时必须包含原仓库链接
## 📧 联系方式
如需商业使用授权,请联系仓库所有者。