使用openresty && minio && thumbor 构建稳定高效的图片服务器
备注:
minio 是一个开源的s3 协议兼容的分布式存储,openresty nginx+lua 高性能可扩展的nginx 衍生版,thumbor 基于python
的图片处理服务器,支持图片的裁剪,识别。。。。
代码为使用docker 构建的一个一体化的参考代码,实际使用中,大家可以基于自己的业务场景修改,对于简单的场景,直接
使用也是可以的。
1. 项目结构
├── Dockerfile-nginx
├── Dockerfile-thumbor
├── README.md
├── docker-compose.yml
└── nginx.conf
2. 代码说明
备注:主要是对于docker-compose.yml的说明
a. docker-compose.yml
version: '3'
services:
nginx:
image: mynginx-minio
build:
context: .
dockerfile: Dockerfile-nginx
ports:
- 8087:80
depends_on:
- thumbor
thumbor:
image: mythumbor
build:
context: .
dockerfile: Dockerfile-thumbor
minio:
image: minio/minio
volumes:
- ./data:/data
- ./config:/root/.minio
ports:
- 9091:9000
command: server /data
b. Dockerfile-nginx 很简单,就是进行反向代理的配置
FROM openresty/openresty:alpine
LABEL name="rongfengliang"
LABEL version="v1.0.0"
ENV name=rongfengliang
ENV version=v1.0.0
COPY nginx.conf usr/local/openresty/nginx/conf/
EXPOSE 80
EXPOSE 443
EXPOSE 88
nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
resolver 127.0.0.11; # dns 配置
gzip on;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
server {
listen 80;
server_name localhost;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
charset utf-8;
location /mydemo{
root html;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
client_body_buffer_size 10M;
client_max_body_size 10G;
proxy_buffers 1024 4k;
proxy_read_timeout 300;
proxy_pass http://minio:9000;
}
location /{
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
client_body_buffer_size 10M;
client_max_body_size 10G;
proxy_buffers 1024 4k;
proxy_read_timeout 300;
proxy_pass http://thumbor/unsafe/300x200/http://minio:9000$request_uri; // 图片处理为300*200 的大小
}
location /alert {
default_type text/html;
content_by_lua_block{
ngx.say([[<script>alert("error")</script>]])
}
}
location /ip {
default_type text/html;
content_by_lua_block{
ngx.say(ngx.var.remote_addr)
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 88;
server_name localhost;
charset utf-8;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
c. Dockerfile-thumbor thumbor 的镜像
FROM alpine:3.6
EXPOSE 80
MAINTAINER dalong@qq.com
CMD ["thumbor", "-l", "info", "-p", "80"]
ENV THUMBOR_VERSION 6.3.2
RUN apk add --no-cache \
python \
libcurl \
ca-certificates \
libjpeg-turbo \
openjpeg \
libwebp \
tiff \
gcc \
py-pip \
curl-dev \
python-dev \
musl-dev \
libjpeg-turbo-dev \
openjpeg-dev \
libwebp-dev \
tiff-dev \
libressl-dev \
&& export LIBRARY_PATH=/lib \
&& pip install thumbor==$THUMBOR_VERSION \
&& apk del gcc *-dev \
&& rm -rf /var/cache/apk/* \
&& rm -rf /root/.cache
docker-compose build
docker-compose up -d
a. 获取minio key
dokcer-compose logs minio
b. 输入minio 登陆需要的key
c. 创建bucket
d. 设置bucket policy * read&&write




http://thumbor.org/
https://www.minio.io/
https://github.com/rongfengliang/mino-thumbor-openresty
使用openresty && minio && thumbor 构建稳定高效的图片服务器的更多相关文章
- 170522、Linux 平台通过 nginx 和 vsftpd 构建图片服务器
Nginx WEB 服务器 Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第 ...
- SSH框架构建微信公众帐号服务器小技巧
SSH框架构建微信公众帐号服务器小技巧 熟悉struts2和servlet的同学应该清楚,struts2的方法多样性弥补了servlet单一的doGet 和doPost方法.如果自己的公众账号服务器是 ...
- Android高效异步图片加载框架
概述 Android高效异步图片加载框架:一个高效的异步加载显示的图片加载框架,同时具备图片压缩,缓存机制等特性. 详细 代码下载:http://www.demodashi.com/demo/1214 ...
- 使用Jersey构建图片服务器
使用Jersey构建图片服务器 前台页面代码 <form id="jvForm" action="add.do" method="post&qu ...
- 使用纯php构建一个简单的PHP服务器
使用原生PHP构建一个简单的PHPWeb服务器 1.目录机构 webserver --src -- Response.php -- Server.php -- Request.php -- vendo ...
- 通过python 构建一个简单的聊天服务器
构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...
- 使用docker构建简约高效的镜像
背景介绍 最近在思考一个问题,我的golang运行到docker环境上的时候,需要安装很大依赖.思考发现我需要就是一个运行二进制的环境而已并不需要golang的编译器等等其他任何多余的. 当前的doc ...
- DIOCP开源项目-利用队列+0MQ+多进程逻辑处理,搭建稳定,高效,分布式的服务端
最近头脑里面一直在想怎么样让能让大家基于DIOCP上写出稳定的服务端程序.很多朋友问我,你DIOCP稳定吗,我可以用他来做三层服务器吗? 当时我是这样回答的,我只能保证DIOCP底层通信的稳定. 说实 ...
- 基于 IBM WAS ND v6.1 搭建稳定高效的集群环境
如今的电子商务及电子政务应用系统的发展已经到了一个新的阶段,应用系统的成熟度和可用性都达到了更高的水准.因此庞大的部署规模和海量的用户访问成为目前大型电子商务及电子政务应用系统的显著特征.在这样的情况 ...
随机推荐
- Qt打开文件对话框同时选中多个文件或单个文件
Qt中打开单个文件 //str_path为文件路径 QString str_path = QFileDialog::getOpenFileName(this, tr("选择转码文件" ...
- gitlab备份还原
断电后gitlab报500错误 查看日志 tail -f /var/log/gitlab/gitlab-rails/production.log ActionView::Template::Error ...
- IDEA中更改Tomcat服务器的URL
先别参考以下的做法,貌似出了点状况,后续修正!!! 直接上图吧 看IDEA的右上角 点击黄色方框内的Edit Configurations,进入以下的编辑面 后面四个框内的都可以修改,当然不要修改和其 ...
- 短路运算符(逻辑与&& 和 逻辑或||)
首先我们来解释一下短路运算符: 短路运算符就是从左到右的运算中前者满足要求,就不再执行后者了: 可以理解为: &&为取假运算,从左到右依次判断,如果遇到一个假值,就返回假值,以后不再执 ...
- Cocos Creator 使用protobufjs
Win7 + Creator 2.0.0 + protobufjs 6.8.8 1.下载安装protobufjs npm install -g protobufjs 可以看到protobufjs安装在 ...
- mongo学习笔记---1
mongo简介 非结构化数据库,数据都是以Bson格式(json的二进制)存储的. 特点:不需要指定表结构,存在一张表里的数据其结构可以完全不同.内部执行引擎为JS解释器, 把文档存储成bson结构, ...
- 三款免费实用的文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance)
三款免费实用的本地文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance) Microsoft SyncToy SyncToy 是由 微软 推出的一款免费 ...
- python functiontools模块中的 wraps
直接上代码看效果: # 定义一个最简单的装饰器 def user_login_data(f): def wrapper(*args, **kwargs): return f(*args, **kwar ...
- mybatis_generator合并xml mapper文件
一.问题 用的mybatis.generator 1.3.6版本,版本没啥大关系. 目前的xml输出有两个主要的问题: 1.xml追加而不是覆盖 这样就导致一个xml mapper文件每个node都重 ...
- MVC模式和MVP模式的区别
MVC模式: 1. MVC的所有通信都是单向的. 2. view传送指令到controller(用户也可以直接将指令传到controller). 3. controller完成业务逻辑后要求model ...