설정은 다음과 같습니다:
- 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