nginx基于mysql的身份验证
2010-12-15 17:30
375 查看
需要安装nginx、 ngx_http_auth_pam_module、pam-mysql、mysql
安装nginx和ngx_http_auth_pam_module
下载nginx和pam模块(http://web.iti.upv.es/~sto/nginx/)
编译安装(具体编译nginx看以前的文章)
./configure --with-pcre=../pcre --with-zlib=../zlib --with-http_ssl_module --with-openssl=../openssl --add-module=../auth_pam_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_flv_module --with-debug
--add-module=../auth_pam_module ,添加了ngx_http_auth_pam_module,存放在/root/auth_pam_module文件中
然后make
make install
make时可能会报错,
-o objs/addon/auth_pam_module/ngx_http_auth_pam_module.o \
../auth_pam_module/ngx_http_auth_pam_module.c
../auth_pam_module/ngx_http_auth_pam_module.c:13: fatal error: security/pam_appl.h: No such file or directory
该错误是因为没安装pam-dev
apt-get install libpam0g-dev
然后重新编译安装就可以了。
安装mysql和mysql pam
apt-get install mysql-server-5.1
apt-get install libpam-mysql
下面在mysql中创建数据库,表及添加帐号密码数据
create database pam;
user pam;
create table user (userid varchar(16),passwd varchar(50),primary key (userid))type=innodb default charset=utf8;
GRANT SELECT ON pam.* TO pamuser@localhost IDENTIFIED BY '123456';
insert into user values ('abc',password('12345'));
数据库:pam
表:user
字段:userid, passwd
数据库访问账号:pamuser
数据库访问密码:123456
nginx访问帐号:abc
nginx访问密码:12345
下面配置pam模块访问mysql
在/etc/pam.d/ 下建一个文件nginx-mysql
/etc/pam.d/nginx-mysql
auth required /lib/security/pam_mysql.so user=pamuser passwd=123456 host=localhost db=pam table=user usercolumn=userid passwdcolumn=passwd crypt=2
account required /lib/security/pam_mysql.so user=pamuser passwd=123456 host=localhost db=pam table=user usercolumn=userid passwdcolumn=passwd crypt=2
配置中的crypt:
0=plain: 明码
1=Y: crypt()函数
2=mysql: mysql的 password()函数
3=md5: mysql的 md5()函数
下面配置nginx使用pam模块
location / {
auth_pam "mysql pam";
auth_pam_service_name "nginx-mysql";
}
重启nginx,就通过mysql身份验证可以访问了。
参考:http://hlee.javaeye.com/blog/559357
http://sudone.com/nginx/nginx_pam_mysql.html
安装nginx和ngx_http_auth_pam_module
下载nginx和pam模块(http://web.iti.upv.es/~sto/nginx/)
编译安装(具体编译nginx看以前的文章)
./configure --with-pcre=../pcre --with-zlib=../zlib --with-http_ssl_module --with-openssl=../openssl --add-module=../auth_pam_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_flv_module --with-debug
--add-module=../auth_pam_module ,添加了ngx_http_auth_pam_module,存放在/root/auth_pam_module文件中
然后make
make install
make时可能会报错,
-o objs/addon/auth_pam_module/ngx_http_auth_pam_module.o \
../auth_pam_module/ngx_http_auth_pam_module.c
../auth_pam_module/ngx_http_auth_pam_module.c:13: fatal error: security/pam_appl.h: No such file or directory
该错误是因为没安装pam-dev
apt-get install libpam0g-dev
然后重新编译安装就可以了。
安装mysql和mysql pam
apt-get install mysql-server-5.1
apt-get install libpam-mysql
下面在mysql中创建数据库,表及添加帐号密码数据
create database pam;
user pam;
create table user (userid varchar(16),passwd varchar(50),primary key (userid))type=innodb default charset=utf8;
GRANT SELECT ON pam.* TO pamuser@localhost IDENTIFIED BY '123456';
insert into user values ('abc',password('12345'));
数据库:pam
表:user
字段:userid, passwd
数据库访问账号:pamuser
数据库访问密码:123456
nginx访问帐号:abc
nginx访问密码:12345
下面配置pam模块访问mysql
在/etc/pam.d/ 下建一个文件nginx-mysql
/etc/pam.d/nginx-mysql
auth required /lib/security/pam_mysql.so user=pamuser passwd=123456 host=localhost db=pam table=user usercolumn=userid passwdcolumn=passwd crypt=2
account required /lib/security/pam_mysql.so user=pamuser passwd=123456 host=localhost db=pam table=user usercolumn=userid passwdcolumn=passwd crypt=2
配置中的crypt:
0=plain: 明码
1=Y: crypt()函数
2=mysql: mysql的 password()函数
3=md5: mysql的 md5()函数
下面配置nginx使用pam模块
location / {
auth_pam "mysql pam";
auth_pam_service_name "nginx-mysql";
}
重启nginx,就通过mysql身份验证可以访问了。
参考:http://hlee.javaeye.com/blog/559357
http://sudone.com/nginx/nginx_pam_mysql.html
相关文章推荐
- Apache基于MySQL的身份验证
- Nginx集群之基于Redis的WebApi身份验证
- Apache基于MySQL的身份验证
- Nginx集群之基于Redis的WebApi身份验证
- 使用nginx代理kibana并设置身份验证
- 使用配制文件定制身份验证和基于角色的安全
- 基于数据库的身份验证
- ASP.NET MVC 4 (十三) 基于表单的身份验证
- Asp.Net Forms身份验证和基于角色的权限访问
- 基于地理位置的用户身份验证
- ASP.Net:基于窗体的身份验证
- ASP.Net:基于窗体的身份验证
- 基于 Token 的身份验证
- C# 基于密码的身份验证报错问题System.Net.NetworkCredential
- nginx+pam+mysql实现基于数据库的用户认证
- LNMP基于fastcgi实现nginx,php,mysql的分离
- WebApi_基于Token的身份验证——JWT(z)
- ASP.NET 中基于角色的窗体身份验证的研究
- ASP.NET MVC 4 (十三) 基于表单的身份验证
- 基于Token的身份验证——JWT