อย่างที่กล่าวไว้ข้างต้นสามารถแก้ไขได้โดย
proxy_set_header การอนุญาต "พื้นฐาน dXNlcjpwYXNzd29yZA==";
ที่ไหน dXNlcjpwYXNzd29yZA==
เป็นผลมาจากคำสั่ง: echo -n "ผู้ใช้:รหัสผ่าน" | ฐาน 64
ฉันเดาว่าคุณลองแล้ว
อย่างไรก็ตาม ฉันเชื่อว่าตำแหน่งที่ถูกต้องจะมีลักษณะดังนี้
ที่ตั้ง / {
proxy_set_header โฮสต์ $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_pass http://IP_CAMERA;
proxy_set_header การอนุญาต "พื้นฐาน dXNlcjpwYXNzd29yZA==";
การอนุญาต proxy_set_header "พื้นฐาน $http_authorization"; # สำหรับโหมดโต้ตอบ
}
ปราศจาก /cgi-bin/mjpg/video.cgi
เพราะมันจะผ่านไปที่ฝั่ง browser หรือ http client
หรือ หากไม่ได้ผล อาจเกี่ยวข้องกับกรณีนี้
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' | หัว -1)
wget http://nginx.org/download/${NGINXFILE}
tar zxvf ${NGINXFILE}
ซีดี ${NGINXFILE%.*.*}
cp -r /etc/nginx /root/nginx_$(date +%F) #สำรองการกำหนดค่า nginx ปัจจุบัน
ซีดี /usr/src
คอมไพล์โคลน 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 --ด้วย -http_secure_link_module --กับ-http_slice_module --กับ-http_ssl_module --กับ-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,ตอนนี้ -พาย'
ทำ
ทำการติดตั้ง
เมื่อเสร็จแล้วคุณสามารถลองกำหนดค่าดังกล่าว:
ที่ตั้ง / {
proxy_http_version 1.1;
เปิด proxy_pass_request_headers;
proxy_set_header โฮสต์ $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
more_set_input_headers 'การอนุญาต: พื้นฐาน dXNlcjpwYXNzd29yZA==';
#more_set_input_headers 'การอนุญาต: $http_authorization'; # สำหรับโหมดโต้ตอบ
proxy_set_header ยอมรับการเข้ารหัส "";
proxy_pass http://IP_CAMERA;
proxy_redirect เริ่มต้น;
more_set_headers -s 401 'www-authenticate: Basic realm="Authentication Required"';
}
ที่ไหน www-authenticate: Basic realm="ต้องมีการตรวจสอบสิทธิ์"
ข้อมูลที่แท้จริงของส่วนหัวนี้
ฉันตรวจสอบทั้งสองกรณีแล้ว มันใช้งานได้สำหรับฉัน ฉันทดสอบกับแอปพลิเคชันขวดแก้วแบบกำหนดเอง น่าเสียดายที่ฉันไม่มีกล้องดังกล่าวสำหรับการแก้ไขจุดบกพร่องส่วนบุคคล