我正在尝试使用 pam 的 linux 系统凭据设置基本 http 身份验证。我安装了 nginx-extras 包,我可以看到 pam 动态模块正在加载到 nginx 中。我的“nginx -V”输出包含以下内容:
--add-dynamic-module=/build/nginx-STHBxL/nginx-1.10.1/debian/modules/nginx-auth-pam
我在 /etc/pam.d 中创建了一个 nginx 文件,其中仅包含:
@include common-auth
/etc/nginx 下的 sites-enabled 文件如下所示:
server { listen 80; server_name localhost; root /home/admin/Apps/seaWeb; location /{ auth_pam "Secure Zone"; auth_pam_service_name "nginx"; try_files $uri $uri/ /index.html; } }
现在,每当我尝试重新启动 nginx 时,我都会不断从错误日志中收到此信息:
2016/12/07 12:35:10 [emerg] 2980#2980: unknown directive "auth_pam" in /etc/nginx/sites-enabled/seaWeb:1
我基本上尝试遵循这里的所有说明: http://www.doublecloud.org/2014/01/nginx-with-pam-authentication/
在网上和这里都查过了,但没找到任何线索。有人说额外的换行符可能是个问题,但看起来并非如此。
对于我在这里遗漏的内容,有什么建议吗?
答案1
nginx 1.10 版本现在支持可加载模块。如果您安装 libnginx-mod-http-auth-pam 包,您将获得 auth_pam 模块。
因此,您需要执行以下操作:
sudo apt-get install libnginx-mod-http-auth-pam
sudo ln -s /usr/share/nginx/modules-available/mod-http-auth-pam.conf /etc/nginx/modules-enabled/50-mod-http-auth-pam.conf
# Add 'include /etc/nginx/modules-enabled/*.conf;' near the top of /etc/nginx/nginx.conf if it isn't there already
sudo systemctl restart nginx
这将安装模块并将其配置为在 nginx 启动时加载。