关于nginx_auth_mysql认证模块
发布时间:2020-06-26 07:41:28
来源:51CTO
阅读:2323
作者:jiangche00
在笔者之前的博文《关于httpd 2.x,mod_auth_mysql模块的安装配置以及对aes加密的支持》中,所提及到的mod_auth_mysql模块,是专门用于Apache httpd的第三方认证模块。在本文中,将介绍在Nginx上面相对应的一个模块,nginx_auth_mysql。准备工作下载nginx_auth_mysql的源代码
CentOS7服务器,nginx源码包(笔者使用nginx1.12.0稳定版)
支持nginx的编译环境,并安装有openssl开发包
存在libmysqlclient以及libmysqld动态库安装流程记录
nginx_auth_mysql的源代码文件如下所示:$ ls
config crypt_private.c crypt_private.h LICENSE ngx_http_auth_mysql_module.c README
查看一下config配置文件,其内容如下所示:$ cat config.bak
ngx_addon_name=ngx_http_auth_mysql_module
HTTP_MODULES="$HTTP_MODULES ngx_http_auth_mysql_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_auth_mysql_module.c $ngx_addon_dir/crypt_private.c"
CORE_LIBS="$CORE_LIBS -lcrypto -lmysqlclient"
USE_MD5=YES
由上述配置文件的格式,可以看出是专门进行静态编译的第三方模块。由于在Nginx 1.9.11版本之后,已经支持以动态模块的方式来支持第三方扩展,并且由上述配置文件的内容,初步判定可以将其修改为动态模块的编译配置,因此这里将其编译为动态库,以供Nginx进行加载。
关于配置文件的修改以及动静模块的转换,参照如下两篇文章:Converting Static Modules to Dynamic Modules
New Config Shell File
经过修改之后的config文件内容如下所示:ngx_addon_name=ngx_http_auth_mysql_module
if test -n "$ngx_module_link"; then
ngx_module_type=HTTP
ngx_module_name=$ngx_addon_name
ngx_module_srcs="$ngx_addon_dir/ngx_http_auth_mysql_module.c $ngx_addon_dir/crypt_private.c"
ngx_module_incs="/usr/include/mysql"
ngx_module_libs="-lcrypto -lmysqlclient -lmysqld -L/usr/lib64/mysql"
. auto/module
else
HTTP_MODULES="$HTTP_MODULES ngx_http_auth_mysql_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_auth_mysql_module.c $ngx_addon_dir/crypt_private.c"
CORE_LIBS="$CORE_LI