SSL 통과를 사용하여 역방향 프록시에 X-Forwarded-for 헤더를 추가하는 방법

SSL 통과를 사용하여 역방향 프록시에 X-Forwarded-for 헤더를 추가하는 방법

설정은 다음과 같습니다:

  • DMZ의 프록시 서버(RHEL8 apache 2.4)
    • 여러 가상 호스트가 포함되어 있습니다.
    • 각 가상 호스트는 LAN의 웹 서버에 대한 역방향 프록시 역할을 합니다.
    • 프록시에서 백엔드 웹 서버로의 연결은 SSL을 통해 보호됩니다.
  • LAN의 백엔드 서버(RHEL8 apache 2.4)

해결해야 할 문제 현재 백엔드 서버의 Apache 액세스 로그에는 원래 클라이언트 IP 대신 프록시의 IP가 표시됩니다. 클라이언트 IP(프록시에 연결하는 사람)가 백엔드 아파치 서버의 액세스 로그에 기록되어 있는지 확인하고 싶습니다.

웹에는 많은 가이드가 있습니다(예:Apache 웹 서버에서 X-Forwarded-For IP 주소를 얻는 방법)을 권장합니다 RemoteIPHeader X-Forwarded-For.

그러나 이는 백엔드에 대한 프록시 연결이 HTTP를 사용하는 경우에만 작동하는 것 같습니다. (linode 포럼에 대한 토론.)

프록시 서버는 SSL 인증서의 공개 키와 개인 키를 보유합니다.

X-Forwarded-for백엔드에 대한 SSL 연결을 유지하면서 헤더를 추가하도록 프록시 서버를 구성하려면 어떻게 해야 합니까 ?

프록시 서버에 대한 가상 호스트 구성(IP 192.168.1.2):

<VirtualHost *:443>
  ServerName service.example.com

  SSLEngine on
  SSLCipherSuite AES256+EECDH:AES256+EDH
  SSLProtocol All -SSLv2 -SSLv3
  SSLHonorCipherOrder On
  SSLCompression off
  SSLCertificateFile /etc/pki/tls/certs/service_example_com.crt
  SSLCertificateKeyFile /etc/pki/tls/private/service_example_com.key
  SSLCertificateChainFile /etc/pki/tls/certs/CA.crt

  SSLProxyEngine on
  ProxyPass / https://backend-1.anubex.com/
  ProxyPassReverse / https://backend-1.anubex.com/
  RemoteIPHeader X-Forwarded-For
  RemoteIPInternalProxy 192.168.1.2

</VirtualHost>

답변1

표시되는 것은 SSL 통과가 아니라 역방향 프록시에서의 SSL 종료와 거기에서 최종 서버로의 또 다른 HTTPS 연결입니다. ~에 따르면문서이는 최종 서버에 대한 새 요청에 자동으로 추가되므로 X-Forwarded-Header역방향 프록시에는 특별한 구성이 필요하지 않습니다.

최종 서버(Apache도 마찬가지)에 이 헤더를 실제로 기록하려면 %a프록시에서 설정한 이 헤더를 그에 따라 해석해야 합니다. 이를 위해mod_remoteip역방향 프록시 구성에서 (잘못) 수행한 것처럼 사용할 수 있고 RemoteIPHeader설정해야 합니다 .X-Forwarded-For

관련 정보