vcl_synth에서 수정 된 오류 페이지를 수정하려고합니다. 이 문제를 vcl_backend_error로 옮길 수도 있지만 문제는 그대로 남습니다. CentOS 7을 사용하고 있으므로 4.0이 아니라 4.1에 액세스 할 수 있습니다. 이것은 std.file_exists가> = 4.1에 존재하기 때문에 중요합니다. 신뢰할 수없고 테스트되지 않은 소스의 패키지를 사용하여 전방/후방 호환성을 손상시키는 것은 용납되지 않습니다.Varnish 4에 설정된 'synthetic'변수는 무엇입니까?
503.html 파일이 존재하지 않을 수있는 문제를 처리하려면 합성 출력을 테스트하고 null/empty가 대체 오류 페이지를 생성하고 싶습니다. 디버깅을 위해 모든 출력을 syslog에 던지고 있습니다. 이것은 현재의 형태로 생산에 지속되지 않습니다.
샘플 : 나는 명확하게 resp.http.body이 비어 참조 위의와
sub vcl_synth {
if (resp.status == 503) {
set resp.http.Content-Type = "text/html; charset=utf-8";
synthetic(std.fileread("/var/www/vhost/" + req.http.host + "/error/503.html"));
std.syslog(3, "resp.http.body: " + resp.http.body);
return (deliver);
}
}
하지만 페이지가 반환 및 브라우저에서 렌더링됩니다. 그렇다면 합성 변수는 어떤 변수를 설정합니까? 그리고, 그것을 테스트 할 수 있습니까?
# journalctl -f
...
Sep 08 02:17:17 REDACTED_HOSTNAME varnishd[32498]: resp.http.body:
PLS는 resp.http.body
을 채우지 않습니다 vcl_synth
동안 synthetic(...)
의
나를 영감에 사로 잡았습니다. fileread를 변수로 설정 한 다음 변수를 테스트하여 null 대소 문자를 처리합니다. 작업 코드가있을 때 원래 게시물을 업데이트합니다. muchas gracias señor :) – Phil