42

次のように、ProxyPass を使用してすべての「/r」リクエストをポート 18080 の jboss にリダイレクトしています。

ProxyPreserveHost on
ProxyPass /r http://localhost:18080/redirectService/
ProxyPassReverse /r http://localhost:18080/redirectService/

ただし、これにより、jboss のアクセス ログに「127.0.0.1」として記録される IP アドレスが発生します。HttpServletRequest でリクエストが送信された場所から元の IP を保持する方法を知っている人はいますか? doGet() で jboss サーブレット リクエストからアクセスしたい

4

5 に答える 5

34

JasonW の答えは結構です。しかし、Apache httpd 2.4.6 以降では代替手段があります: mod_remoteip

あなたがしなければならないことはすべて:

  1. mod_remoteip パッケージをインストールする必要があるかもしれません

  2. モジュールを有効にします。

    LoadModule remoteip_module modules/mod_remoteip.so
    
  3. 以下を Apache の httpd 設定に追加します。プロキシ サーバーの構成ではなく、この行を追加する必要があることに注意してください。これをプロキシ ターゲット httpd サーバー(プロキシの背後にあるサーバー)の構成に追加する必要があります。

    RemoteIPHeader X-Forwarded-For
    # replace IP with the remote server you trust
    RemoteIPInternalProxy 10.123.123.1/24
    

詳細およびその他のオプションについては、 http://httpd.apache.org/docs/trunk/mod/mod_remoteip.htmlを参照してください。

セキュリティ警告!これは、信頼できるプロキシに対してのみ行ってください。そうしないと、誰かが自分の IP を偽造する可能性があります。

于 2015-06-11T14:51:52.933 に答える
34

元のホストはX-Forwarded-Forヘッダー フィールドから取得できます。

于 2009-04-17T12:54:45.123 に答える
14

これには、より洗練された説明と複数の可能な解決策があります。http://kasunh.wordpress.com/2011/10/11/preserving-remote-iphost-while-proxying/

この投稿では、プロキシを含むセットアップ中にホスト/IP を保持するために、人気のある 1 つの Apache モジュールとあまり知られていない 1 つの Apache モジュールを使用する方法について説明しています。

mod_rpaf モジュールを使用し、バックエンド サーバーにインストールして有効にし、モジュールの構成に次のディレクティブを追加します。RPAFproxy_ips 127.0.0.1
の RPAFsethostnameで RPAFenable

(2017 年編集) mod_rpaf の現在の場所: https://github.com/gnif/mod_rpaf

于 2011-11-26T05:36:05.990 に答える
8

そうする機能がある場合は、mod-jkまたはmod-proxy-ajpのいずれかを使用してApacheからJBossにリクエストを渡すことをお勧めします。AJPプロトコルは、HTTPプロキシリクエストを使用する場合に比べてはるかに効率的であり、利点として、JBossはリクエストがApacheではなく元のクライアントからのものであると見なします。

于 2009-04-17T21:41:02.347 に答える