反向代理将不同的用户引导到相应的位置

反向代理将不同的用户引导到相应的位置

我有一个服务器。它的功能之一是同步事物。此应用程序没有针对每个用户的授权,只有管理员。所以我决定为每个用户运行不同的 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;
    }
}

相关内容