2014-06-30 3 views
2

변수 평가가 true를 반환하면 haproxy가 30x 상태 코드를 반환하도록하고 싶습니다. 나는 당신이 쿠키 같은 것들을 haproxy에서 조건문을 구성하고, 평가할 수 있습니다 참조 : 동적 변수에 기반한 조건부 하프 록시

use_backend i if !cookie_set

하지만 평가 후면이 조건에 대한 내 경우 변수에

내 환경에서 소스입니다. 이 변수를 haproxy에 액세스하는 데 필요한 모든 메소드에서이 변수를 노출 할 수 있으며 간단한 부울이 될 수 있습니다 (따라서 'x가 true이면 302를 반환'). 이것을 지원하기 위해 haproxy를 설정하는 방법이 있습니까?

답변

2

이 문제를 해결할 방법을 발견했습니다. 'always_true'및 'always_false'라고하는 conditionals for ACLs이 있는데 이름에서 알 수 있듯이 항상 사용되는 ACL이 true 또는 false를 반환하도록합니다.

redirect code 307 prefix http://someurl if do_redir 

ACL을 do_redir 후 리디렉션을 전환 내 메커니즘은 다음과 같습니다

acl do_redir always_true 

다음 내 설정에서 나중에이 ACL을 사용하여 리디렉션 STMT를 구성 : 그래서 난 내 설정에서 이렇게 같은 것을 설정 haproxy의 행동. 나는 haproxy 설정에서이를 변경하고 요리사를 사용하여 프로세스를 다시 시작하므로 모든 작업이 매우 빠르게 진행됩니다.

내가 아직까지 작업하지 않은이 ACL을 수정하는 다른 방법은 haproxy 소켓을 사용하는 것입니다. 이것은 현재의 방법보다 재시작이나 잠재적으로 연결이 끊어 지거나 haproxy 설정 파일을 수정하는 복잡성과 위험이 추가된다는 점에서 이점이 있습니다.