0

我的防火墙后面有一台 AXIS 摄像机。

如果您 cURL 到相机的 IP,它希望通过元刷新将您重定向到 /view/index.shtml。

我正在尝试通过 webserver-IP/摄像头访问摄像头。我的 nginx 配置很简单 - 它看起来像这样:

    location /camera {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_pass http://192.168.0.205:80/;
            proxy_redirect default;
    }

然而,这不起作用 - 重定向没有发生。当我访问 webserver-IP/camera 时,它会将我重定向到 webserver-IP/view 而不是 webserver-IP/camera/view。

有任何想法吗?

谢谢!

4

2 回答 2

0

尝试用proxy_redirect这条线替换你的

proxy_redirect http://192.168.0.205:80/; http://192.168.0.205:80/camera/;

我不知道你的Location标题到底说了什么,但你应该明白,用主机名或重定向试图带你的任何内容替换 IP,你只是告诉 nginx 附加/camera到网站要求你的任何重定向做

于 2013-09-09T08:06:21.970 回答
0

问题是轴相机返回的 html、js 和 css 都假定您是从一个 URL 访问它http://192.168.0.205/(只是方案和主机,没有额外的/camera/路径)

如果您查看 html,您会看到如下内容:

<script src="/incl/prototypes.js?ver=5.80.1" language="javascript" type="text/javascript"></script>

简而言之,您需要重新编写您提供的内容以反映您将从中请求它的新 URL:http://192.168.0.205/camera/

您可以使用子过滤器来做到这一点:

 location /camera {
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    Host $http_host;
    proxy_pass          http://192.168.0.205:80/;
    proxy_redirect      default;

    # nevuh fuhget where you from
    sub_filter_once     off;
    sub_filter_types    *;
    sub_filter          '"/'    '"/camera/';
    sub_filter          '=/'    '=/camera/';
}

根据您的相机,您可能需要尝试并添加更多sub_filter线条来捕捉基本路径错误指向的所有位置/。此外,这基本上是用 REGEX 解析 html/js/cs,所以要小心。

于 2018-08-22T15:23:38.523 回答