2017-09-12 70 views
0

我使用的漆3.0.6-1一個主機和tomcat8在另一個上。 Tomcat的運行良好,但由於某種原因,我不能讓漆後端是健康的。光油Backend_health - 還在生病

這裏是我的配置:

probe healthcheck { 
    .url = "/openam/"; 
    .timeout = 3 s; 
    .interval = 10 s; 
    .window = 3; 
    .threshold = 2; 
    .expected_response = 302; 
} 

backend am { 
    .host = "<INTERNAL-IP>"; 
    .port = "8090"; 
    .probe = healthcheck; 
} 


sub vcl_recv { 
    if (req.request == "PURGE") { 
     if (!client.ip ~ purgers) { 
      error 405 "You are not permitted to PURGE"; 
     } 

     return(lookup); 
    } 

    else if (req.http.host == "bla.domain.com" || req.http.host == "<EXTERNAL-IP>") { 
     set req.backend = am; 
    } 

    else if (req.url ~ "\.(ico|gif|jpe?g|png|bmp|swf|js)$") { 
     unset req.http.cookie; 
     set req.backend = lighttpds; 
    } 

    else { 
     set req.backend = apaches; 
    } 
} 

它總是顯示:

Backend_health - am Still sick 4--X-R- 0 2 3 0.001956 0.000000 HTTP/1.1 302 

的telnet工作正常到該主機,我不能算出它的唯一的事情就是捲曲返回302這是因爲tomcat上'openam'下的主頁面重定向到另一頁面。

$ curl -I http://<INTERNAL-IP>:8090/openam/ 
HTTP/1.1 302 
Location: http://<INTERNAL-IP>:8090/openam/config/options.htm 
Transfer-Encoding: chunked 
Date: Tue, 12 Sep 2017 15:00:24 GMT 

有沒有辦法解決這個問題?

讚賞任何意見, 感謝

回答

0

根據所提供,你打在this bug of Varnish 3的信息。

記者曾3.0.7,並且是唯一一個可在目前版本的包裝,所以你可能將不得不從源建設。因此,考慮到Varnish 3已經很老了,我寧願推薦升級到更新的Varnish 4或5.(重寫VCL的幾行比保留從源代碼編譯的東西更容易,而且麻煩與確保它始終保持最新狀態相關)。

另一個明顯的解決辦法來調整你的應用程序發送HTTP原因沿碼,或者指向最終的重定向位置可能(或不會)已經提供了理由HTTP狀態。

檢查是否curl -IL http://<INTERNAL-IP>:8090/openam/config/options.htm提供輸出的一個原因。

如果它類似於HTTP/1.1 200 OK而不僅僅是HTTP/1.1 200那麼只需將您的運行狀況檢查更新到該URL(自然也會調整預期的響應代碼)。