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.