技术解析

怎样用LDAP(AD)来认证Nginx的proxy_pass?
0
2021-05-31 06:31:16
idczone
在本地有一台server foo可以访问某些受限环境的server bar(单独开了防火墙foo -> bar:80)
然后http://foo/abc会用proxy_pass转到http://bar/abc

现在的需求是,我想在Nginx里配置一些认证,最好是能用LDAP(Active Directory), 只让授权用户来访问http://foo/aaa http://foo/bbb
麻烦请问各位有什么好的思路?
因为http://foo/redmine 和http://foo/jenkins的Jenkins和Redmine(Rails app)都已经有插件去实现AD的认证,所以想统一用AD.. 可是又不大清楚怎样使用Redmine或Jenki大带宽服务器ns现有的系统去认证Nginx http://foo/aaa http://foo/bbb 的proxy_pass ...

好像有点乱,不知道描述清楚了没 >_<
Google 了一下,https://github.com/kvspb/nginx-auth-ldap/blob/master/example.conf

谢谢,其实试过nginx-auth-ldap 就是还没大想明白要怎么跟Redmine或者Jenkins或者任意的auth.php之类的做集成...

让nginx做auth有啥意义呢,这里明显是需要多个系统集成,nginx作为一个固化系统,是很难做到灵活的,你的web应用都是rail,wsgi前端套个auth中间件来做认证就是了。
HTTP Basic Auth仅仅是浏览器每次都带了HTTP头,写着用户名和base64了的密码,这种操作没必要折腾nginx来完成。

我需要验证的后台服务并不是Rails, 也不是Jenkins, 只是一些监测的古老的Applets + 纯HTML. 我只是想可不可以"借用" Rails或者Jenkins的authentication而已
Anyway已经成功, 感谢各位。直接用nginx-auth-ldap即可,会弹出一个类似HTTP Basic的对话框来输入用户名密码,不用专门的页面

"nginx作为一个固化系统,是很难做到灵活的"
这话说明你根本不懂nginx
example: http://uimeet.com/imdb-api-release/

:) Nginx其实是非常灵活的,尤其是武装了各种第三方模块之后以及Lua之后。
可以参见淘宝的应用 http://tengine.taobao.org/download/taobao_nginx_2012_06.pdf
以及Nginx传奇人物章宜春同学的 http://agentzh.org/misc/slides/nginx-conf-scripting/+ http://agentzh.org/misc/slides/recent-dev-nginx-conf/#1


确实有个流派是把很多业务逻辑以C模块方式去实现,但我认为那是属于优化流程,因为web开发首先是实现,这里面一般面向动态语言,然后再针对瓶颈去优化;模块级别的代码是C,维护成本会日益增加。淘宝、阿里之类的当然大可拿nginx大写特写,但不是谁都是淘宝能长期养下一群牛人,直接学人家那样直接上一堆模块只是埋下隐患。
当然,这仅仅是个效益最大化问题,符合需求当然才是最重要的。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服