我有一个服务器。它的功能之一是同步事物。此应用程序没有针对每个用户的授权,只有管理员。所以我决定为每个用户运行不同的 Syncthing 实例。
对于授权过程,我想使用 unix 用户名和密码(来自 /etc/passwd)。
我想使用 nginx 作为反向代理和授权验证器。您能否验证我的想法并帮助我提供示例。
服务布局示例:
- Syncthing 用户 1 监听 127.0.0.1:8384
- Syncthing 用户 2 监听 127.0.0.1:8385
- Syncthing 用户 3 监听 127.0.0.1:8386
- Nginx(或其他)在默认 HTTPS 端口 0.0.0.0:433 上监听所有接口,包括 IPv6
地址是https://synxrage.local/syncthing. 端口绝不能出现在 URL 中。
根据成功授权的用户代理指向不同的内部端口并且用户可以看到他的管理面板。
答案1
好吧,这让我很烦恼,其实使用$remote_user
多变的。
要启用 PAM 身份验证,您需要执行以下操作:
安装nginx-extras
:
sudo apt -y install nginx-extras
创建/etc/pam.d/nginx
并添加以下内容:
auth include common-auth
account include common-account
允许 nginx 读取影子文件:
sudo usermod -aG shadow www-data
指示找到这里。
现在你可以配置 nginx
# configure one upstream per user
# give it the name of the user that logs in
upstream usera {
server localhost:8384;
}
upstream userb {
server localhost:8385;
}
upstream userc {
server localhost:8386;
}
# now configure the actual reverse proxy
server {
listen 80 default_server;
location / {
# add pam authentication
auth_pam "PAM Authentication";
auth_pam_service_name "nginx";
# configure reverse proxy to connect to the per-user backend
proxy_pass http://$remote_user;
}
}