2017-09-12 45 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(自然也会调整预期的响应代码)。