SSLパススルーを使用してリバースプロキシにX-Forwarded-forヘッダーを追加する方法

SSLパススルーを使用してリバースプロキシにX-Forwarded-forヘッダーを追加する方法

設定は次のとおりです。

  • DMZのプロキシサーバー(RHEL8 apache 2.4)
    • 複数の仮想ホストが含まれています。
    • 各仮想ホストは、LAN上のWebサーバーのリバースプロキシとして機能します。
    • プロキシからバックエンド Web サーバーへの接続は SSL 経由で保護されます。
  • LANのバックエンドサーバー(RHEL8 apache 2.4)

解決する必要がある問題現在のバックエンドサーバーのApacheアクセスログには、元のクライアントIPの代わりにプロキシのIPが表示されます。クライアントIP(プロキシに接続している人)がバックエンドApacheサーバーのアクセスログに記録されていることを確認したいと思います。

Webには多くのガイドがあります(例:Apache Webサーバーから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

おすすめ記事