使用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 搭建稳定高效的集群环境
如今的电子商务及电子政务应用系统的发展已经到了一个新的阶段,应用系统的成熟度和可用性都达到了更高的水准.因此庞大的部署规模和海量的用户访问成为目前大型电子商务及电子政务应用系统的显著特征.在这样的情况 ...
随机推荐
- Ngnix配置
server { listen 80; server_name www.local.test; root /data/workspace; index index.php index.html in ...
- Docker 搭建代码质量检测平台 SonarQube
开始搭建 1.获取 postgresql 的镜像 $ docker pull postgres 2.启动 postgresql $ docker run --name db -e POSTGRES_U ...
- GitHub的Windows客户端的使用教程
GitHub for Windows客户端的使用教程 什么是Github >说到什么是GitHub,我们先看wikipedia的描述“GitHub是一个利用Git进行版本控制.专门用于存放软件代 ...
- 安装Go插件遇到的问题及解决方法
1. 问题:在 Windows 平台下使用 go get 安装sqlite3 驱动时报错 The remote end hung up unexpectedly ? 原因及解决方法: 原因可能有两种: ...
- Katy Perry - E.T.
作曲 : Katy Perry, Łukasz Gottwald, Max Martin, Joshua Coleman 作词 : Katy Perry, Łukasz Gottwald, Max M ...
- 『Python』内存分析_list和array
零.预备知识 在Python中,列表是一个动态的指针数组,而array模块所提供的array对象则是保存相同类型的数值的动态数组.由于array直接保存值,因此它所使用的内存比列表少.列表和array ...
- Oracle数据库联机重定义讲解及错误处理
1.1. 关键字:联机重定义/SYNC_INTERIM_TABLE/GATHER_TABLE_STATS 1.2. 需求:数据表的清理机制需要优化 离线消息表采用delete的方式定期对过期的数据进行 ...
- Python connect mariadb(Python连接mysql)
#!/usr/bin/python#coding=utf-8 import MySQLdb # 打开数据库连接db = MySQLdb.connect("192.168.1.250" ...
- C# MVC 微信支付教程系列之公众号支付
微信支付教程系列之公众号支付 今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后 ...
- centos7源码安装Python3的前提条件
centos7源码安装Python3的前提条件: # yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline- ...