0

私はいくつかの Web カメラを持っており、Varnish を介してトラフィックを通過させたいと考えています。

各 Web カメラには、独自の Web サーバーがあります。最初にcam.city.travel:4444/cam1/にアクセスしてカメラ1を表示し、cam.city.travel:4444/cam2/のページにカメラ2を表示し、次のページにも到達したいと考えています。

ウェブサイト cam.city.travel:4444/cam1/ を使用すると、cam.city.travel:4444/cgi-bin/image.html のアドレス バーが再生されました。/cam1/ ( cam.city.travel:4444/cam1/cgi-bin/image.html ) を挿入すると、ページの一部だけが表示されます。例の画像がありません。

画像のリンクは cam.city.travel:4444/picture/current.jpg です

これまでのところ、私の考えはうまくいきませんか、それともワニスでは不可能ですか?

私が使用する次の構成:

    #
    # varnish configuration
    #
    vcl 4.0;

    backend cam01 { .host = "xxx.xxx.xxx.xx1"; .port = "80"; }
    backend cam02 { .host = "xxx.xxx.xxx.xx2"; .port = "80"; }
    backend cam03 { .host = "xxx.xxx.xxx.xx3"; .port = "80"; }
    backend cam04 { .host = "xxx.xxx.xxx.xx4"; .port = "80"; }
    backend cam05 { .host = "xxx.xxx.xxx.xx5"; .port = "80"; }

    sub vcl_recv {
        set req.http.x-host = req.http.host;
        set req.http.x-url = req.url;
        set req.http.x-ip = server.ip;
        set req.http.x-port = std.port(server.ip);

        if (req.http.host == "cam.city.travel:4444") 
          {
           if (req.url ~ "^/cam01/") { set req.url = 
    regsub(req.url, "^/cam01/", "/"); set req.backend_hint = cam01; }
           if (req.url ~ "^/cam02/") { set req.url = 
    regsub(req.url, "^/cam02/", "/"); set req.backend_hint = cam02; }
           if (req.url ~ "^/cam03/") { set req.url = 
    regsub(req.url, "^/cam03/", "/"); set req.backend_hint = cam03; }
           if (req.url ~ "^/cam04/") { set req.url = 
    regsub(req.url, "^/cam04/", "/"); set req.backend_hint = cam04; }
           if (req.url ~ "^/cam05/") { set req.url = 
    regsub(req.url, "^/cam05/", "/"); set req.backend_hint = cam05; }

           set req.http.x-backend = req.backend_hint;
           return (pass);
        }
    }
4

1 に答える 1

0

次のように、 directorを使用してラウンドロビンアプローチを使用できるようです。

director cameras round-robin {
        {
                .backend = cam01;
        }
        {
                .backend = cam02;
        }
        {
                .backend = cam03;
        }
        {
                .backend = cam04;
        }
        {
                .backend = cam05;
        }
}

sub vcl_recv {
   if (req.http.host ~ "^cam.city.travel$") {
       set req.backend = cameras;
   }
} 

参照: https://www.varnish-cache.org/trac/wiki/LoadBalancing

于 2015-11-13T11:22:44.763 に答える