Задать вопрос
@dronmaxman
VoIP Administrator

Как авторизовать с помощью nginx?

Есть видео регистратор, с него можно получить скриншот картинки таким методом.
http://admin:admin@10.1.1.10/cgi-bin/snapshot.cgi?...

Хочу настроить nginx proxy который будет проксировать эти запросы и добавлять в них авторизацию, что бы пользователь не вводил логин и пароль. То есть, пользователь будет переходить на https://ipcam.domain.com/poster, а прокси будет проксировать на

location /poster {
        proxy_set_header Authorization "Basic YWRtaW46YWRtaW4="; ## эта конструкция не работает
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://10.1.1.10/cgi-bin/snapshot.cgi?channel=1;
        }


С помощью proxyman смог выдернуть запрос на http://admin:admin@10.1.1.10/cgi-bin/snapshot.cgi?..., в нем видно первый ответ сервера
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest realm="Login to 3D04A97PBM00047",qop="auth",nonce="1494436225",opaque="a93077c1c5ff5f5f6b632f460abda31386d814b6"
Connection: close
CONTENT-LENGTH: 0


на который клиент отправляет заголовок Authorization, но повторить это в nginx proxy_pass у меня не получается.
GET /cgi-bin/snapshot.cgi?channel=1 HTTP/1.1
Host: 10.1.1.10
Connection: keep-alive
Authorization: Digest username="admin", realm="Login to 3D04A97PBM00047", nonce="1488633015", uri="/cgi-bin/snapshot.cgi?channel=1", response="93fd92abcc5a41b48cc2a2d443686ed2", opaque="a93077c1c5ff5f5f6b632f460abda31386d814b6", qop=auth, nc=00000001, cnonce="7696474d69eef2e4"
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: ru-UA,ru;q=0.9


В интернете куча примеров как из nginx сделать сервер для авторизации, но нет примеров как сделать nginx клиентом который будет авторизоваться.

Может кто-то сталкивался с похожей задачей?
  • Вопрос задан
  • 312 просмотров
Подписаться 2 Простой 3 комментария
Решения вопроса 1
karabanov
@karabanov Куратор тега Linux
Системный администратор
Тут нужен какой-то обработчик. Думаю можно взять Nginx с поддержкой Lua или Perl и написать такой обработчик.
Ещё можно попробовать переключить в настройках регистратора метод аутентификации с Digest на Basic.

Или написать скрипт на PHP (или чём угодно) который будет проходить аутентификацию, получать картинку с регистратора и отдавать её Nginx.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы