LINUX.ORG.RU
ФорумJob

Решить проблему с проксированием в nginx

 , ,


0

2

Нужно дожать тему: nginx проксирование медиа-потока IP камеры. Коротко: Имеется IP камера, которая вещает видео в Web-интерфейсе. При работе через nginx proxy - видео не транслируется, хотя вся работа с камерой осуществляется только по 80 порту (при прямом пробросе через NAT только 80-го порта - все работает). Доступ к камере есть, можете попробовать запроксировать ее у себя: http://expert-group.site:870/ Логин user, пароль 123qwert. Сейчас камера запроксирована на http://cam1.expert-group.site/. Текущие настройки Proxy:

server {
    listen       80;
    server_name  cam1.expert-group.site;
    location / {
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://192.168.1.64:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
Предложения на alfasterisk@yandex.ru



Последнее исправление: nike-tesla (всего исправлений: 1)

Проблема скорее всего не с настройками прокси, а с настройками upnp. Оно не может пробросить доп порт в маршрутизаторе, если ты к нему через прокси лезешь. Глянь в последнее сообщение в этом треде:

http://www.cctvforum.com/viewtopic.php?f=12&t=50080

In that case, use the HIKVISION P2P EZVIZ function. It'll bypass the private IP issues. I don't like it cause it's a security risk and also depends fully on manufacturer's server and speed might be affected. But it's a solution to bypass your internet connection limitation.

Вот какая-то инструкция по настройке этой штуки:

http://ftp.hikvision.ru/08. Инструкции/EZVIZ cloud p2p.pdf

sidor ★★
()
Последнее исправление: sidor (всего исправлений: 1)
Ответ на: комментарий от sidor

а с настройками upnp

Точнее не с настройками, а с тем, что оно использует upnp, чтоб пробрасывать порт для видеопотока

sidor ★★
()
Ответ на: комментарий от sidor

Да нет же UPNP не используется, другой порт не пробрасывается, я Wireshark'ом сканирую - обмен идет только с 80-м портом (в данном случае с 870, проброшенным на 80-ый порт камеры). А инструкция - это сервис который сделан для обхода NAT'а, работает по типу TeamViewer'а.

nike-tesla
() автор топика
Ответ на: комментарий от nike-tesla

Вот из их доки про доступ к камере:

Порты необходимые для доступа к оборудованию:

• 80 веб­интерфейс

• 443 для доступа по HTTPS (если необходимо)

• 554 RTSP порт для прямого получения потока с камеры

• 8000 SDK­порт, необходим для подключения к ПО IVMS и регистраторам

• 8200 данные, сервисный порт

Так что не один порт используется. Для видео 554. Загляните на страничку «сеть-базовые настройки- nat»

Может я, конечно, ошибаюсь, но пока что мне кажется, что браузерный плугин коннектиться должен именно на порт 554

sidor ★★
()
Последнее исправление: sidor (всего исправлений: 4)

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

max_lapshin ★★★★★
()
Ответ на: комментарий от max_lapshin

Да весь смысл в том, что нужно хочется отдавать не просто видео, а весь функционал Web-интерфейса, в том числе проигрыватель (камера имеет слот под SD карту, и может писать без регистратора). Да и просто уже интересны причины. От Hikvision Support добился ISAPI мануал и RTSP Interfaces and Development Guide. В последнем есть такой пункт как «2.4 RTP OVER RTSP OVER HTTP». Похоже то, что нужно. Я так понял, что проблема в заголовке «x-sessioncookie». Но мне откровенно не хватает знаний чтоб применить эту инфу к nginx proxy.

nike-tesla
() автор топика
Ответ на: комментарий от nike-tesla

Нет. Там проблема скорее всего в другом. До начала передачи видеопотока всё идёт ок. После обращения плагина к URL /SDK/play камера начинает передавать видеопоток в http ответе. Проходит первый пакет, после которого nginx обрубает соединение. Ему что-то не нравится в этом пакете. Например, встречал описания, что там с content-length есть заморочка, что камера его указывает большим, а отдаёт пакет маленький, что нгинксу не нравится и он рвёт соединение.

Я бы вообще не стал морочаться. Умерла, так умерла. Есть другие способы выполнить задачу. А упираться в проксирование - какой смысл?

sidor ★★
()
Ответ на: комментарий от serbathome

Нет, отчаялся. Не думал что кому-то еще интересно, выключил камеру. Утром включу обратно.

nike-tesla
() автор топика
Ответ на: комментарий от nike-tesla

Ага, я вечером посмотрю. Если что-то получится, напишу.

serbathome
()
Ответ на: комментарий от nike-tesla

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

serbathome
()
Ответ на: комментарий от nike-tesla

tcpdump в помощь! Подозреваю что камера использует halfclosed tcp соединение при отдаче видео, а nginx воспринимает это как завершение соединения.

Ivan_83
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.