Как сказано выше, это может быть решено с помощью
proxy_set_header Авторизация "Базовая dXNlcjpwYXNzd29yZA==";
куда dXNlcjpwYXNzd29yZA==
результат команды: echo -n "пользователь:пароль" | base64
я думаю, вы уже пробовали это
в любом случае, я считаю, что правильное расположение будет выглядеть так
место расположения / {
proxy_set_header Хост $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://IP_CAMERA;
proxy_set_header Авторизация "Базовая dXNlcjpwYXNzd29yZA==";
proxy_set_header Авторизация "Базовая $http_authorization"; # Для интерактивного режима
}
без /cgi-bin/mjpg/video.cgi
потому что он будет проходить в браузере или на стороне http-клиента
ИЛИ ЖЕ Если это не работает для вас, это может быть связано с этим случаем
https://stackoverflow.com/questions/14839712/nginx-reverse-proxy-passthrough-basic-authenication
Если у камеры есть какие-либо проверки области, вы можете узнать ожидаемую область с помощью инструментов разработчика на вкладке «Заголовки» — раздел «Заголовки ответа».
Но вам нужно будет скомпилировать nginx с заголовки-больше-nginx-модуль
Вы можете сделать это с помощью этого скрипта
компакт-диск /USR/SRC
NGINXFILE=$(wget -qO- http://nginx.org/en/download.html | tr ' ' '\n' | egrep -o 'nginx.+?tar.gz' | head -1)
wget http://nginx.org/download/${NGINXFILE}
смола zxvf ${NGINXFILE}
cd ${NGINXFILE%.*.*}
cp -r /etc/nginx /root/nginx_$(date +%F) #Резервное копирование текущих конфигураций nginx
компакт-диск /USR/SRC
клон git https://github.com/openresty/headers-more-nginx-module.git
./configure --add-module=/usr/src/headers-more-nginx-module --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/ lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/ nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/ nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/ var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with -threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with -http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_s tub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt=' -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' - -with-ld-opt='-Wl,-z,relro -Wl,-z,теперь -pie'
делать
сделать установку
как только это будет сделано, вы можете попробовать такую конфигурацию:
место расположения / {
прокси_http_версия 1.1;
proxy_pass_request_headers включен;
proxy_set_header Хост $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
more_set_input_headers 'Авторизация: Basic dXNlcjpwYXNzd29yZA==';
#more_set_input_headers 'Авторизация: $http_authorization'; # Для интерактивного режима
proxy_set_header Accept-Encoding "";
proxy_pass http://IP_CAMERA;
proxy_redirect по умолчанию;
more_set_headers -s 401 'www-authenticate: Basic realm = "Требуется аутентификация"';
}
куда www-authenticate: Basic realm="Требуется аутентификация"
ваши фактические данные этого заголовка
Я проверил оба случая, у меня это работает, я тестировал его в пользовательском приложении фляги. К сожалению, у меня нет такой камеры для личной отладки.