我想使用 nginxPAM 模块在 FreeBSD 系统上对现有用户进行网站身份验证。我尝试使用 pam_unix.so,但没有成功。它就是不让我使用我的 usr/psw 对登录。:(
nginx 配置:
location / {
root html;
auth_pam "Secure Zone";
auth_pam_service_name "nginx";
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
include fastcgi_params;
}
目录中的 nginx 文件/usr/local/etc/pam.d
:
auth required pam_unix.so
account required pam_unix.so
如果有人能告诉我一个可行的配置,我将不胜感激。:)
答案1
回答一个非常老的问题,但我能够确认这确实有效,所以这可能会有所帮助。这允许根据本地服务器帐户名对 nginx 位置进行身份验证。YMMV。
- Ubuntu 18.04
- nginx 1.14(包含 http_auth_pam 模块)
nginx -v
nginx version: nginx/1.14.0 (Ubuntu)
创建/etc/pam.d/nginx
并添加行:
@include common-auth
在你的 nginx 配置中:
location /secure {
auth_pam "Secure zone";
auth_pam_service_name "nginx";
}
秘诀是:
sudo usermod -aG shadow www-data
检查 nginx.conf 中所使用的帐户user www-data
。有时可以将其配置为nobody
。
重新启动 nginx 然后就好了!
感谢上述答案帮助我完成这个解决方案
答案2
不确定您是否已经尝试过,但我确实注意到了:
请注意,该模块以 Web 服务器用户身份运行,因此所使用的 PAM 模块必须能够在非 root 身份下对用户进行身份验证;这意味着如果您想使用 pam_unix.so 模块对用户进行身份验证,您需要让 Web 服务器用户读取 /etc/shadow 文件(如果这并不让您害怕的话)(在类似 Debian 的系统上,您可以将 www-data 用户添加到 shadow 组)。
恐怕我无法确认您的配置,因为我没有使用 pam_unix.so。