2015-11-13 3 views
0

J'ai plusieurs caméras Web et je veux que le trafic passe à travers le vernis.Problèmes avec mes nombreux serveurs Web différents

Chaque webcam possède son propre serveur Web. Je veux atteindre d'abord, quand je page cam.city.travel:4444/cam1/ qui montrent alors la caméra 1 et à la page cam.city.travel:4444/cam2/ puis la caméra 2 et la suivante aussi bien. Lorsque j'utilise le site Web cam.city.travel:4444/cam1/, je rejoue la barre d'adresse dans cam.city.travel:4444/cgi-bin/image.html. Lorsque j'insère/cam1/(cam.city.travel:4444/cam1/cgi-bin/image.html) apparaît seulement une partie de la page. Les exemples d'images sont manquants.

Pour le lien de l'image est cam.city.travel:4444/picture/current.jpg

Jusqu'à présent, mon idée ne fonctionne pas ou est impossible avec Varnish?

La configuration suivante j'utilise:

# 
    # 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); 
     } 
    } 

Répondre

0

On dirait que vous pouvez utiliser l'approche du tournoi à la rondeavec un directeur , comme ceci:

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; 
    } 
} 

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

+0

Merci de votre réponse. Je ne vais pas LoadBalancing. Je vais diriger de la came. Type I cam.city.travel:4444/cam1/ -> direct à cam1, cam.city.travel:4444/cam2/ -> direct à cam2 ... – beatnick33