SSL을 종료하는 HAProxy는 백엔드 서버로 SSL을 보냅니다.


14

HAProxy에서 SSL을 종료하고 헤더를 조작하고 URL을 다시 작성하며 트래픽을 다시 암호화하고 백엔드 서버에 SSL로 보내려고합니까?

나는 이것을 할 수있는 방법을 찾지 못하는 것 같습니다. 정기적 인 SSL 종료를 수행하고 일반 HTTP 요청을 백엔드로 보낼 수 있습니다. 그러나 백엔드에 SSL을 보내야합니다.

다음과 같은 기능을 갖고 싶습니다.

  • 프록시 뒤에 실제 클라이언트 IP를 얻기 위해 x-forwarded-for 헤더를 추출하십시오.
  • 쿠키를 사용하여 세션 고 정성을 구현하십시오.
  • URL을 다시 작성하십시오.
  • 쿠키 기반 세션 고 정성을 사용하여 SSL 트래픽을 백엔드로 보냅니다.

haproxy 끝에서 SSL을 종료하지 않으면 URL 재 작성을 수행 할 수 없습니다.

여기 좋은 사람들의 도움이 있다면 대단히 감사하겠습니다.


1
현재 설정을 게시하고 작동하지 않는 부분을 알려주시겠습니까?
GregL

답변:


30

haproxy.cfg에는 특별한 작업이 없습니다. HAProxy 프론트 엔드 내에서 원하는 URL 재 작성 및 헤더 조작을 구성한 다음 SSL 백엔드로 트래픽을 재 지정하기 만하면됩니다. 다음은 간단한 예입니다.

frontend app1_ssl
    bind *:443 ssl crt /etc/haproxy/certs.d/example.com.crt crt /etc/haproxy/certs.d/ no-sslv3

    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443

    # set HTTP Strict Transport Security (HTST) header
    rspadd  Strict-Transport-Security:\ max-age=15768000

    # some ACLs and URL rewrites...

    default_backend             backend_app1_ssl


backend backend_app1_ssl
    server mybackendserver 127.0.0.1:4433 ssl verify none

1
대박! 시도해 보도록하겠습니다. "server .... ssl"을 찾을 수 없었습니다.
oazabir

도와 주셔서 감사합니다. 나는 그것을 작동시킬 수있었습니다. 그러나 SSL을 작동시키지 못했습니다. 도와 주실 수 있습니까? 질문은 여기에 있습니다 : serverfault.com/questions/738397/…
oazabir

큰 도움을 줄 수있어서 다행입니다. 다른 사람들이 도움이되었다는 것을 즉시 알 수 있도록 내 대답을 받아들이는 것을 잊지 마십시오 ;-)
Tubeless

ssl verify none을 제공하여 암호화가 실제로 작동합니까? haproxy 문서에서 " 'none'으로 설정하면 서버 인증서가 확인되지 않습니다. 다른 경우 서버에서 제공 한 인증서는 'ca-file'의 CA를 사용하여 확인됩니다." 누군가 이것을 명확히 할 수 있습니까?
mjm

함께 ssl verify noneHAProxy 및 백엔드 서버 간의 트래픽 여전히 암호화되어 있지만, 백엔드의 SSL 인증서의 유효성은 확인되지 않습니다.
Tubeless
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.