如果 nginx 想接 LDAP 認證,網路上找到的資料主要都是透過 nginx 的模組直接支援,但這需要自己 compile 一個出來 (因為內建的好像都沒支援),對於後續維護不太方便,就懶了... 後來研究出來的方法是 nginx 接 PAM,再用 PAM 接上 LDAP,這些都有現成套件可以一路串起來。
首先是 nginx 要裝 PPA 版 (像是「NGINX Stable : “Nginx” team」這個版本),裡面的 nginx-full 會包括 libnginx-mod-http-auth-pam,接下來是安裝 libpam-ldap,這樣套件就裝好啦...
設定的部份,nginx 內這樣設:
location ~ /test { auth_pam "Secure Zone"; auth_pam_service_name "nginx-ldap"; }
然後 /etc/pam.d/nginx-ldap
裡面掛上 LDAP 就可以了:
auth required pam_ldap.so account required pam_ldap.so
重點在於 /etc/ldap.conf
內的設定,我是只 base dc=example,dc=com
(base 是什麼) 與 uri ldap:///
(LDAP 伺服器在哪),其他都註解掉。
這樣是比較麻煩沒錯,不過軟體其他人都包好了,這樣反而省了維護軟體的功夫...