0

内部サーバーにインストールされたアプリケーションを Web サイトで公開するように、Apache (バージョン 2.4) リバース プロキシを構成しました。すべて正常に動作します。これらは、proxy-html.conf に追加した行です。

ProxyPass /app/bpv0SOCPOkqptPqO6XsIvucLzO7QXJyA/ http://srvacg:9081/acgv4/

この URL http://www.mysite.com/app/bpv0SOCPOkqptPqO6XsIvucLzO7QXJyA/を書くと、内部アプリケーションにログインでき、それを操作できます。

問題は、アプリケーションがクライアントの IP アドレスをチェックし、同じ IP に対して一度に 1 つの接続しか許可しないことです。リバース プロキシを構成すると、すべての接続は、Apache がインストールされているサーバーのプライベート IP で行われます。

この問題を解決するために mod_remoteip を有効にしようとしました:

RemoteIPHeader X-Forwarded-For

しかし、結果は常に同じです。これはApacheのアクセスログです:

REMOTE-IP: %a - LOCAL-IP: %A | X-Forwarded-For: %{X-Forwarded-For}i | h: %h | UNDERLYING CLIENT IP: %{c}a |

REMOTE-IP: 217.57.XXX.XXX - LOCAL-IP: 192.168.89.3 | X-Forwarded-For: 217.57.XXX.XXX | h: 217.57.XXX.XXX | UNDERLYING CLIENT IP: 217.57.XXX.XXX |

217.57.XXX.XXX はクライアント IP、192.168.89.3 は内部 IP で、アプリケーションが受信した IP です。この情報を取得する方法を知ることはできません。

誰か助けてくれませんか?

4

2 に答える 2

1

要件に応じてそのアプリケーションを変更できない場合は、ラップできますか?

単純なスクリプトにすぎない追加のアプリケーション、簡単なラッパーをインストールできる場合は、回避策を構築できる可能性があります。「実際の」内部アプリケーションではなく、すべての要求をそのラッパーに転送するようにプロキシサーバーを構成します。次に、ラッパーはプロキシサーバーに代わって内部要求を行い、プロキシ(またはクライアント)が行った方法で「実際の」アプリケーションに要求し、応答を転送します。利点:元のリモートクライアントIPから発信されたように見えるリクエストを作成できる場合があります。このリクエストは、プロキシサーバーが追加する追加のヘッダーとしてラッパーが確認できます。ラッパーから「実際の」アプリケーションへの要求はシステム内部であるため、パッケージはネットワークを通過せず、ファイアウォールによってブロックされることはありません。

私はこれを試しませんでしたが、回避策かもしれません...

于 2012-10-16T19:39:56.087 に答える