使用Thumbor创建CDN图片处理服务器
写在前面
因为云服务器的glibc版本普遍较低,最新版的Thumbor安装后需要升级glibc,而升级glibc时间久,危险性大,可能导致服务器直接无法登录,所以参用低版本的Thumbor,目前选用的版本为6.6
安装
linux安装
- 先确认python版本,确保python版本为2.7
python --version
再确保pip版本
pip --version
如果 pip版本不对或未安装,那么使用下述方法进行安装
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py
正式安装thumbor pip install thumbor==6.7.0
启动
简单启动 thumbor 即可启动,默认端口8888,默认配置在python库中 正式启动 生成配置文件 thumbor-config -> /etc/thumbor.conf 修改配置文件,避免其他人使用
- 限制来源,只能过滤指定地址的图片
ALLOWED_SOURCES = ['baidu.com','192.168.0.1'] 这样便只有百度和192.168.0.1地址下的图片才能使用 - 加密
修改以下配置,即可进行加密
SECURITY_KEY = "123456"
ALLOW_UNSAFE_URL = False
使用时需要使用 thumbor -k 123456 https://baidu.com/test.img 计算图片地址 推荐使用方法1,既方便又确保图片来源 启动 thumbor -p 8888 -c '/etc/thumbor.conf'
配置nginx
一般云服务器不会大开端口的,而且直接使用端口不安全、不美观,所以使用nginx进行反向代理,并配置为https
server {
listen 443 ssl;
server_name your server;
charset utf-8; client_max_body_size 1024M;
ssl_certificate /yourpath/fullchain.cer;
ssl_certificate_key /yourpath/domain.key;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
send_timeout 60s;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_redirect off;
set $fixed_destination $http_destination;
if ( $http_destination ~* ^https(.*)$ ){
set $fixed_destination http$1;
}
### Set headers ####
proxy_set_header Host $http_host:$proxy_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Destination $fixed_destination
}
}
使用
进行图片裁剪
- 首先需要对图片地址进行处理,因为thumbor需要完全的url
window.encodeURIComponent(
"https://github.com/thumbor/thumbor/raw/master/example.jpg"
)
- 在浏览器控制台输出上述命令,就能得到编译后的url
https%3A%2F%2Fgithub.com%2Fthumbor%2Fthumbor%2Fraw%2Fmaster%2Fexample.jpg
- 将得到的url与下面的地址进行拼接,即可得到裁剪后的图片,裁剪的大小由
w(宽)xh(高) 控制 http://localhost:8888/unsafe/wxh/ 完整地址:http://localhost:8888/unsafe/300x200/https%3A%2F%2Fgithub.com%2Fthumbor%2Fthumbor%2Fraw%2Fmaster%2Fexample.jpg
图片反转
将上面的像素大小改为负数,即可进行反转操作,w为负是左右反转,h为负是上下反转,都为负则是上下左右都反转 http://localhost:8888/unsafe/-300x-200/https%3A%2F%2Fgithub.com%2Fthumbor%2Fthumbor%2Fraw%2Fmaster%2Fexample.jpg
图片压缩
使用filters过滤器进行图片压缩 max_bytes(number-of-bytes) number-of-bytes 单位是字节
http://localhost:8888/unsafe/-300x-200/filters:max_bytes(7500)/https%3A%2F%2Fgithub.com%2Fthumbor%2Fthumbor%2Fraw%2Fmaster%2Fexample.jpg 确实会进行压缩,但并不是压缩到指定大小,官方说的是指定大小,实际测试中并没有压缩到指定大小,测试使用的2M的图片,压缩到了500kb左右,效果已经很明显了
|