Jump to content

Recommended Posts

Подскажите, может кто сталкивался с такой проблемой:

При проксировании трафика через nginx стандартный web-интерфейс грузится, но далее список камер не загружается (Сообщение: "Не удалось загрузить список камер"). При этом https://server/cameras/ и stream-потоки в web-плеере работают без проблем.

Как запроксировать стандартный web-интерфейс?

Share this post


Link to post
Share on other sites

Здравствуйте!
1. http://demo.devline.ru/ на этом ПК открывается нормально?
2. На других ПК в этой сети всё нормально работает или вопрос относится ко всем компьютерам в этой сети?
3. Сервер в этой же LAN или подключение через интернет?
4. Попробуйте очистить настройки "Панель управления\Система и безопасность\Flash Player"
5. Что в логах NGINX ?  
Какую задачу Вы пытаетесь решить используя NGINX ? 

Share this post


Link to post
Share on other sites

1. Все открывается
2. http://line.adm.tver.ru/  - интерфейс грузится, а список камер не загружается
3. Сервер в отдельной подсети, доступ осуществляется через nginx proxy_pass. При этом http://line.adm.tver.ru/cameras/ доступен, через приложение на android так же все ок.
4. Не помогло
5. Nginx access.log

Формат лога:

                 '$host $remote_addr - $remote_user [$time_local] '
                '"$request" $status $bytes_sent '
                '"$http_referer" "$http_user_agent" '
                '"$gzip_ratio" "$request_body" "$upstream_addr"';

10.10.101.229 - адрес line сервера (OS Windows Server 2008)
172.30.128.100 - мой локальный IP
line.adm.tver.ru (77.94.172.230) - nginx proxy (OS ubuntu server 16.04 LTS)

 

line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:25 +0300] "GET / HTTP/1.1" 200 2893 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" "-" "10.10.101.229:9786"
line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:25 +0300] "GET / HTTP/1.1" 200 1515 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "2.19" "-" "127.0.0.1:8080"
line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:25 +0300] "GET /js/swfobject.js HTTP/1.1" 200 10473 "http://line.adm.tver.ru/" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" "-" "10.10.101.229:9786"
line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:25 +0300] "GET /js/swfobject.js HTTP/1.1" 200 4261 "http://line.adm.tver.ru/" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "2.59" "-" "127.0.0.1:8080"
line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:25 +0300] "GET /favicon.ico HTTP/1.1" 200 1379 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" "-" "10.10.101.229:9786"
line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:25 +0300] "GET /favicon.ico HTTP/1.1" 200 1379 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" "-" "127.0.0.1:8080"
line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:25 +0300] "GET /flash.swf HTTP/1.1" 200 214826 "http://line.adm.tver.ru/" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" "-" "10.10.101.229:9786"
line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:25 +0300] "GET /flash.swf HTTP/1.1" 200 214826 "http://line.adm.tver.ru/" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" "-" "127.0.0.1:8080"
line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:26 +0300] "GET /lang.json HTTP/1.1" 200 3289 "http://line.adm.tver.ru/flash.swf" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" "-" "10.10.101.229:9786"
line.adm.tver.ru 172.30.128.100 - - [18/May/2018:09:00:26 +0300] "GET /lang.json HTTP/1.1" 200 3289 "http://line.adm.tver.ru/flash.swf" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" "-" "127.0.0.1:8080"

Задачи две:
1. Через стандартный web-интерфейс (на flash) предоставить доступ к камерам - тут как раз проблема;
2. Вывод видео с камер на сайте (HTML5 плеер) - тут все ок, все работает.

Edited by andresys
мелкие правки

Share this post


Link to post
Share on other sites
Цитата

1. Через стандартный web-интерфейс (на flash) предоставить доступ к камерам - тут как раз проблема;

Вот как раз не проблем  в нормальных ситуациях. Я только не понял, на серваке веб работает нормально же? И самого правила не вижу, а в логе ничего не понятно (откуда вылезает "127.0.0.1:8080" ??? ).  Если на сервере работает - настройте прозрачное проксирование и будет счастье. Если не получается - обратитесь к местному садмину,  пусть уделить пару минут. 

Чтиво:
https://habr.com/post/158393/
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_pass
http://nginx.org/ru/docs/stream/ngx_stream_proxy_module.html
https://forum.nginx.org/read.php?21,266706,266706#msg-266706

ИМХО - обратного доступа нет, т.е. настройки не верные. Но я совершенно не уверен, что вообще можно настроить. Что мешает просто пробросить порт 9786 TCP и оставить в покое этот прокси? 

Share this post


Link to post
Share on other sites

1. покажите location c proxy_pass

2 . скорее всего проблема с flashpolicy.xml

https://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html

по русски http://www.itlessons.info/actionscript/flash-policy-file-server/

у меня есть реализация для  freebsd

Edited by Yarushkin

Share this post


Link to post
Share on other sites

Снял tcpdump на proxy сервере и вижу что flash-клиент помимо 80 порта, так же пытается подключиться на 843 порт и на 9786. Поменял в настройках сервера порт 9786 на 80 и перезагрузился. Теперь порта 9786 в tcpdump нет, визуальный результат тот же, но а в логах nginx появилась новая запись:

172.30.128.100 - - [18/May/2018:11:00:53 +0300] "<policy-file-request/>\x00" 400 343 "-" "-" "-" "-" "-"

127.0.0.1:8080 - это внутренний прокси. HTTP и HTTPS трафик заворачивается сначала на него, а он потом раскидывает его по backend'ам. Пишется все в один access.log поэтому все строчки дублируются. Убрал 127.0.0.1:8080 из цепочки результат пока не поменялся.

12 минут назад, Yarushkin сказал:

1. покажите location c proxy_pass

2 . скорее всего проблема с flashpolicy.xml

https://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html

по русски http://www.itlessons.info/actionscript/flash-policy-file-server/

у меня есть реализация для  freebsd

По сообщению выше видно что проблема с flashpolicy.xml, но пока не разобрался

server {
        listen 80;
        listen 443 ssl;
        server_name line.adm.tver.ru;

        ssl_certificate /etc/letsencrypt/live/line.adm.tver.ru/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/line.adm.tver.ru/privkey.pem;

        location / { proxy_pass http://10.10.101.229:80; }

        error_page 400 /crossdomain.xml;

        location = /crossdomain.xml {
                root /var/www/crossdomain.xml;
        }

        location ~ ^/cam([0-9]+)\.jpg$ {
                image_filter resize 320 200;
                image_filter crop 320 200;
                add_header Cache-Control no-cache;

                error_page   415 = /empty;

                proxy_pass http://10.10.101.229:80/cameras/$1/image?authorization=Basic%20d2ViOndlYg%3D%3D;
        }

        location = /empty {
                empty_gif;
        }
}

Пробую подпихивать crossdomain.xml взятый с line сервера, но пока не работает.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Павел М.
      Возникла задача организовать закрытую трансляцию камер на сайте. Ни один из стандартных вариантов (https://devline.ru/translation/) не подошёл, предложенные на форуме способы тоже не устроили. На скорую руку было набросано решение на nginx (нужен для корректной работы по HTTPS) и Video.js (собственно сам плеер).
      Плюсы:
      Полноценное HTML5 видео со всеми вытекающими. Поддерживается Internet Explorer (по меньшей мере Windows 7/IE11 или новее, на более старых не проверял). Поддержка работы по HTTPS без каких-либо предупреждений. Скрыт реальный адрес сервера с «Линия IP». Не используются сторонние сайты. Разграничение доступа по пользователям. Минусы:
      Весь трафик идёт через ваш сервер.  
      В конфиг nginx надо будет добавить:
      server { listen 443 ssl http2; root /usr/local/www/video; server_name video.example.com; ssl_certificate fullchain.pem; ssl_certificate_key privkey.pem; location / { auth_basic "My video server"; auth_basic_user_file htpasswd; } location /cameras/ { proxy_pass http://devline.server.local:9786/cameras/; } } Вместо devline.server.local указываем имя или IP-адрес вашего сервер «Линия IP». В файле htpasswd необходимо прописать имена пользователей и пароли (по паролям читаем документацию), которые совпадают с соответствующими пользователями на сервере «Линия IP» и которым необходимо дать доступ к трансляции.
      Для работы потокового вещания потребуется библиотека HLS для Video.js. Пример кода:
      <!doctype html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Видеонаблюдение</title> <link href="css/video-js.min.css" rel="stylesheet"> <script src="js/videojs-ie8.min.js"></script> <script src="js/video.js"></script> <script src="js/lang/ru.js"></script> <script src="js/videojs-flash.min.js"></script> <script src="js/videojs-http-streaming.min.js"></script> </head> <body> <video id="video" class="video-js vjs-default-skin" width="640" height="360" poster="//video.example.com/cameras/0/image?resolution=640x360" preload="none" controls data-setup='{"language": "ru"}'> <source src="//video.example.com/cameras/0/streaming/main.m3u8" type="application/x-mpegURL" /> <p class="vjs-no-js">Для просмотра этого видео, пожалуйста, включите JavaScript и убедитесь, что ваш браузер поддерживает HTML5-видео.</p> </video> </body> </html>  
×