原创

通过nginx为图片添加水印

近来想给网站图片增加水印,遂在网上搜索了一番,发现nginx的第三方模块扩展nginx-image-filter-watermark可以实现该功能,记录一下折腾的过程。

一、下载nginx源码包与扩展模块:

nginx地址:https://nginx.org/en/download.html

nginx-image-filter-watermark地址:https://github.com/intaro/nginx-image-filter-watermark

二、替换源码模块后编译nginx

本次使用的nginx为nginx-1.24.0.tar.gz版本

解压文件:

tar -zxvf nginx-1.24.0.tar.gz
unzip nginx-image-filter-watermark-master.zip

将nginx-1.24.0/src/http文件夹下ngx_http_image_filter_module.c文件替换为nginx-image-filter-watermark-master文件夹下ngx_http_image_filter_module.c:

cp nginx-image-filter-watermark-master/ngx_http_image_filter_module.c nginx-1.24.0/src/http/modules/ngx_http_image_filter_module.c

进入nginx-1.24.0文件夹:

cd nginx-1.24.0

为了适配原版本,需要获取旧版nginx编译指令:

nginx -V

因为原来nginx是通过yum安装的,所以指令有点长

在指令最后增加模块--with-http_image_filter_module:后执行编译配置:

./configure --prefix=/etc/nginx (中间太长省略) --with-http_image_filter_module

报错了,因为该模块依赖gd库,所以我们要安装一个gd-devel:

yum -y install gd-devel

安装完成后再次执行该命令后成功

编译nginx(注意该处只需要make就可以了):

make

编译完成就可以把旧版的替换掉了,可以参考:生产环境nginx版本升级

mv /usr/sbin/nginx /usr/sbin/nginxbak
cp objs/nginx /usr/sbin/

三、配置开启水印功能

修改nginx配置文件增加以下配置(在localhost下):

水印图片需要透明背景,可以参考:使用word制作透明背景图片

image_filter watermark;#打开水印功能
image_filter_watermark "/img/logo.png";#水印图片地址(绝对路径)
image_filter_watermark_position center-center;水印位置

重启nginx

systemctl restert nginx

然后就可以刷新页面查看效果了。

水印放在中间太难看了,调整一下放到右下角:

image_filter_watermark_position bottom-right;
#该配置可选参数如下:
# top-left|top-right|bottom-right|bottom-left|right-center|left-center|bottom-center|top-center|center-center|center-random

至此配置完成。



扩展说明:

1.观察了一下服务器,发现请求的时候cpu瞬间飙满了,性能不够的还是不要轻易尝试。


正文到此结束
本文目录