nginx lua连接mysql_Nginx配置lua和MySQL实现访问控制

该篇需要使用ngx_openresty以及ngx_coolkit(获取$remote_passwd 输入值)

在nginx.conf所在的目录下建立文件accesslua.lua,内容为:

local res = ngx.location.capture("/getauth")

if ngx.re.match(res.body,"1") then

return

end

ngx.header.WWW_Authenticate=[[Basic realm="Restricted"]]

ngx.exit(401)

nginx.conf的配置:

在http段中加入如下内容:

upstream nginxbackend

{

drizzle_server 127.0.0.1:3306 dbname=nginx password=youpassword user=yourdbname protocol=mysql charset=utf8;

drizzle_keepalive max=100 mode=single overflow=reject;

}

在需要验证的地方(server/location)放入如下文字:

#auth request start

access_by_lua_file 'conf/accesslua.lua';

#auth request end

新加一个location /getauth,内容为:

location = /getauth

{

internal;

set_unescape_uri  $user $remote_user;

set_unescape_uri  $passwd $remote_passwd;

set_quote_sql_str  $user $user;

set_quote_sql_str  $passwd $passwd;

drizzle_query "select count(*) as count from user where user=$user and passwd=$passwd";

drizzle_pass nginxbackend;

rds_json on;

}

OK,大功造成。

效果如图所示:

c31bffbc01ca534d57ad7a483f41b4c0.png

这只是一个验证用户名和密码的例子,还可以进行扩展,比如验证IP,验证浏览器的类型,验证时间段等等,结合lua,扩展无极限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值