Рейтинг:0

Обратный прокси для направления разных пользователей в соответствующие места

флаг gt
kyb

У меня есть сервер. Одной из его функций является SyncThing. Это приложение не имеет авторизации для каждого пользователя, только администратор. Поэтому я решил запускать разные экземпляры Syncthing для каждого пользователя.

Для процесса авторизации я хотел бы использовать имена пользователей и пароли unix (из /etc/passwd).

Я представляю, как использовать nginx в качестве обратного прокси-сервера и средства проверки авторизации. Не могли бы вы проверить мою идею и помочь мне с примерами.

Примерная схема сервисов:

  • Синхронизация user1 прослушивает 127.0.0.1:8384
  • Синхронизация user2 прослушивает 127.0.0.1:8385
  • Синхронизация user3 прослушивает 127.0.0.1:8386
  • Nginx (или другой) прослушивает все интерфейсы, включая IPv6, на порту HTTPS по умолчанию 0.0.0.0:433.

Адрес будет https://synxrage.local/syncthing. Порт никогда не должен появляться в URL-адресах.

В зависимости от успешно авторизованного пользователя прокси направляет на другой внутренний порт и пользователь видит свою админку.

vidarlo avatar
флаг ar
Отвечает ли это на ваш вопрос? [Как я могу пересылать запросы с моего веб-сервера?](https://serverfault.com/questions/1035016/how-can-i-forward-requests-from-my-web-server)
флаг in
@vidarlo не совсем так. Фактическая проблема (использование разных серверных частей для разных аутентифицированных пользователей) здесь не рассматривается. Я не знаю, возможно ли это.
флаг in
[этот билет](https://trac.nginx.org/nginx/ticket/439) предлагает [переменную $remote_user](http://nginx.org/en/docs/http/ngx_http_core_module.html#var_remote_user ). Должна быть возможность использовать это для определения используемого внутреннего сервера.
kyb avatar
флаг gt
kyb
спасибо ребята за комментарии
Рейтинг:1
флаг in

Хорошо, это меня раздражало, и на самом деле было довольно легко использовать $remote_user переменная.

Чтобы включить аутентификацию PAM, вам нужно сделать несколько вещей:

Установить nginx-дополнения:

sudo apt -y установить nginx-extras

Создавать /etc/pam.d/nginx и добавьте следующее содержимое:

auth включает общую аутентификацию
учетная запись включает общую учетную запись

Разрешите nginx читать теневой файл:

sudo usermod -aG тень www-данные

инструкции нашел здесь.

Теперь вы можете настроить nginx

# настроить один апстрим для каждого пользователя
# дайте ему имя пользователя, который входит в систему

вышестоящий пользователь {
    локальный хост сервера: 8384;
}

вышестоящий пользовательb {
    локальный хост сервера: 8385;
}

вышестоящий пользовательc {
    локальный хост сервера: 8386;
}

# теперь настройте фактический обратный прокси

сервер {
    слушать 80 default_server;

    место расположения / {
        # добавить аутентификацию pam
        auth_pam "Аутентификация PAM";
        auth_pam_service_name "nginx";

        # настроить обратный прокси для подключения к серверной части для каждого пользователя
        proxy_pass http://$remote_user;
    }
}
kyb avatar
флаг gt
kyb
Есть ли способ динамически управлять вверх по течению. Я имею в виду добавление или удаление пользователей в зависимости от изменения списка пользователей во время выполнения. Я даже думаю для математики на основе UID: UID-1000+8384? где UID — это идентификатор пользователя Linux. Первый пользователь обычно имеет идентификатор 1000.
kyb avatar
флаг gt
kyb
Большое спасибо!!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.