我使用来自 epel repo 的 yum 将 nginx 1.10.2 安装到我的 RHEL 7 服务器上:
$ sudo yum install epel-release
$ sudo yum install nginx httpd-tools
现在我想添加 ldap 身份验证。我从 github 搜索中找到了以下内容: https://github.com/kvspb/nginx-auth-ldap
但是,根据说明,需要通过 nginx 源上的 configure 和 make 命令添加模块,而我认为我无法访问这些源。
这是否意味着我需要从源代码重新安装 nginx ?还有其他方法吗?
答案1
直到 1.9.11 版,所有 nginx 模块(包括第三方模块)都必须静态编译到 nginx 中。与 Apache 不同,nginx 不支持动态加载模块。因此,每次想要添加新模块时,都必须重新编译 nginx。
nginx 1.9.11 引入了load_module
指令,但并非所有模块都有或甚至可以转换为动态模块然而。许多现存的文献仍然反映了这一点。
nginx-auth-ldapconfig
看起来具有正确的语法来作为动态模块工作,那么更大的问题是 EPEL 的 nginx 包维护者是否提供了提供 nginx-auth-ldap 的现成 RPM,如果没有,您将需要自己编译模块。
nginx 源,我相信我无法访问。
顺便说一句,您可以安装 SRC rpm 包,以获取用于制作二进制 nginx RPM 的源代码和 SPEC 文件
答案2
我最终从源代码重新安装了 NGINX,并在编译时添加了 nginx-auth-ldap 模块。我在这里找到了一个非常有用的操作方法:http://www.ehowstuff.com/how-to-install-nginx-on-centos-7-rhel-7/我只需将 nginx-auth-ldap 模块添加到 ./configure 命令中,它就会在编译时正确添加。我现在就可以运行了!:-)
从经验中可以得到一些教训:
- 从以下位置下载模块https://github.com/kvspb/nginx-auth-ldap在继续之前,请阅读 readme 和 wiki
- 这可能看起来并不明显,但您需要为模块创建一个 AD 用户才能访问 AD(我创建了一个名为“LDAPauth”的用户,具有最小权限,并将密码设置为永不过期且用户无法更改(这是您将在 binddn 和 binddn_passwd 指令中使用的用户帐户)
- 对我有用的 binddn 语法是“DOMAIN\LDAPAUTH”(请注意双反斜杠和全部大写)[编辑:由于某种原因,评论编辑器删除了 DOMAIN 和 LDAPAUTH 之间的双反斜杠,并将其替换为单个反斜杠]
- 我建议您在服务器块中为至少两个域控制器创建 ldap_server 部分以实现冗余。然后,在位置块中为每个 DC 添加一个“auth_ldap_servers xxx;”指令。
- 确保根据“require”指令添加适当的“group_attribute”指令(例如,如果您计划对用户进行身份验证,请添加“group_attribute uniquemember”。要对组成员进行身份验证,请添加“group_attribute member”)。
- 如果您遇到 DN 语法问题,请转到 ADUC,打开您的 AD 用户或组属性,然后在“属性编辑器”选项卡中向下滚动到 distinguishedName。您可以双击并从此处复制粘贴正确的 DN。注意:请小心不要意外更改此窗口中的值...
- 我发现我在 auth_ldap“输入 AD 凭据”指令中指定的语句并不总是按预期显示,具体取决于所使用的浏览器。在 Firefox 中,我得到“mysite 正在请求用户名和密码。该网站显示:“输入 AD 凭据”。在 Chrome 中,我得到“mysite 需要用户名和密码”。在 IE 中,我得到服务器 mysite 正在要求输入您的用户名和密码。服务器报告它来自输入 AD 凭据。”