前文
nginx根目录(/opt/nginx-1.17.0)、nginx模块安装目录(/usr/local/nginx)可能路径跟你们的有出入,请自行替换,若nginx未安装,请参考我的其他文章
正文
- 先安装可能用到的依赖包
yum install libgd2-devel
yum install libpcre-devel
yum install libcurl-devel
yum install gd-devel
- 进入nginx根目录(注意这里是nginx根目录,不是nginx模块的安装目录),下载Nginx Image缩略图模块
cd /opt/nginx-1.17.0
wget https://github.com/3078825/nginx-image/archive/master.zip --若下载慢,直接浏览器下载后拷贝到这个目录即可
unzip master.zip
- 运行nginx -V命令查看已经安装的nginx模块(configure arguments:后面表示当前已经安装的nginx模块)
[root@VM_129_9_centos nginx-1.17.0]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.17.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx/ --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_ssl_module --add-module=/usr/local/fastdfs-nginx-module/src
我这里已经安装了fastdfs模块 --add-module=/usr/local/fastdfs-nginx-module/src, 这个在后续添加缩略图模块时不要遗漏
- 添加动态缩略图模块
--add-module=ngx_image_thumb-master
./configure --prefix=/usr/local/nginx/ --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_ssl_module --add-module=ngx_image_thumb-master --add-module=/usr/local/fastdfs-nginx-module/src
- 编译
make
- 备份nginx模块安装目录下的/usr/local/nginx/sbin/nginx文件(防止失败情况可还原用),拷贝新编译的objs/nginx到/usr/local/nginx/sbin/nginx目录下,到此缩略图模块安装完成。
cp objs/nginx /usr/local/nginx/sbin/nginx
若复制失败,进入/usr/local/nginx/sbin目录关闭nginx服务 ./nginx -s stop
- 进入nginx模块安装目录配置nginx.conf文件,配置缩略图参数。
cd /usr/local/nginx/conf
vim nginx.conf
server {
listen 9080 ssl;
server_name 域名/ip;
ssl_certificate /usr/local/nginx/cert/1_spinms.spinsoft.cn_bundle.crt;
ssl_certificate_key /usr/local/nginx/cert/2_spinms.spinsoft.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#配置图片缩略图,匹配图片后缀,使用缩略图模块进行图片处理
location ~* /group([0-9])/.*\.(gif|jpg|jpeg|png)$ {
root /opt/fastdfs/;
image on;
image_output off;
image_jpeg_quality 75;
image_backend off;
image_backend_server http://baidu.com/123.jpg; #配置一个不存在的图片地址,防止查看缩略图时图片不存在,服务器响应慢
#配置响应头头部,携带参数传download=1支持下载功能,支持携带参数fileName自定义文件下载名
if ( $query_string ~* ^(.*)download=config\b|1\b(.*)$ ){
add_header Content-Disposition "attachment;fileName=$arg_filename";
}
}
#不是图片文件使用ngx_fastdfs_module模块处理
location ~ /group([0-9]) {
root /opt/fastdfs/;
#配置响应头头部,携带参数传download=1支持下载功能,支持携带参数fileName自定义文件下载名
if ( $query_string ~* ^(.*)download=config\b|1\b(.*)$ ){
add_header Content-Disposition "attachment;fileName=$arg_filename";
}
ngx_fastdfs_module;
}
}
测试原图:https://域名/group1/M00/00/00/CgCBCWBcQOiAL3dhAAJ9SuF-Xws627.jpg
测试缩略图:https://域名/group1/M00/00/00/CgCBCWBcQOiAL3dhAAJ9SuF-Xws627.jpg!m200x200.jpg
若缩略图出现以下404情况,则建立一个软连接
mkdir -p /opt/fastdfs/group1/M00
ln -s /opt/fastdfs/* /opt/fastdfs/group1/M00
参数说明
image on/off 是否开启缩略图功能,默认关闭
image_backend on/off 是否开启镜像服务,当开启该功能时,请求目录不存在的图片(判断原图),将自动从镜像服务器地址下载原图
image_backend_server 镜像服务器地址
image_output on/off 是否不生成图片而直接处理后输出 默认off
image_jpeg_quality 75 生成JPEG图片的质量 默认值75
image_water on/off 是否开启水印功能
image_water_type 0/1 水印类型 0:图片水印 1:文字水印
image_water_min 300 300 图片宽度 300 高度 300 的情况才添加水印
image_water_pos 0-9 水印位置 默认值9 0为随机位置,1为顶端居左,2为顶端居中,3为顶端居右,4为中部居左,5为中部居中,6为中部居右,7为底端居左,8为底端居中,9为底端居右
image_water_file 水印文件(jpg/png/gif),绝对路径或者相对路径的水印图片
image_water_transparent 水印透明度,默认20
image_water_text 水印文字 "Power By Vampire"
image_water_font_size 水印大小 默认 5
image_water_font 文字水印字体文件路径
image_water_color 水印文字颜色,默认 #000000