6

テスト目的でApacheサーバーをセットアップしようとしています。目標は、ロードバランサーをシミュレートすることです。シミュレートしようとしているのは、クライアントの安全なhttprequestを受け入れ、proxypassを使用して(安全でないhttpを介して)正しいサーバーに渡すことです。これはすべて100%機能します。

問題はこれです:私はこの「ロードバランサー」をいくつかの開発環境に使用したいと思います。アプリケーションのサーバー側をテストできるようにするために、proxypassがクライアントIPである可変URLを使用して渡すようにします。これには、proxypassルールで可変URLを使用する必要があります。変数REMOTE_ADDRを見つけましたが、proxypassルールでこれを使用できないようです。最初にapacheWebサイトで使用するように指示された構文を試しましたが、機能しませんでした(http:// REMOTE_ADDR / foobar /のDNSルックアップエラーが発生しました)。Interpolateで何かをしなければならないことは知っていますが、それが正確に何であるかを理解できないようです。

この行はそれがすべきことを実行するので、サーバーはうまく機能します:
ProxyPass / http:// localhost:81 /

これらは私が(変数を使用して)試したが失敗したルールです。

ProxyPass / http:// $ {REMOTE_ADDR}:81 /
エラー:[クライアント127.0.0.1]プロキシ:DNSルックアップの失敗:${remote_addr}が/によって返されました

ProxyPass / https://% {REMOTE_ADDR} s /
エラー:[client 127.0.0.1]プロキシ:DNSルックアップの失敗:%{remote_addr} s return by /

ProxyPassInterpolateEnv On
...
ProxyPass / http:// $ {REMOTE_ADDR}:81 /補間
エラー:[クライアント127.0.0.1] URLの解析エラー//:81:無効なホスト/ポート

誰かアイデアはありますか?

4

2 に答える 2

15

補間の場合、次のようになります。

RewriteEngine on
RewriteMap lowercase int:tolower

#This sets the variable to env:
RewriteRule ^ - [E=SERVER_NAME:${lowercase:%{SERVER_NAME}}]

#Now interpolate makes variables available for proxypass & proxypassreverse:
ProxyPassInterpolateEnv On
ProxyPass / ajp://${SERVER_NAME}:8009/ interpolate
ProxyPassReverse / ajp://${SERVER_NAME}:8009/ interpolate

インターネットで一晩中検索したところ、このような明確な事例や答えは見つかりませんでした。しかし、私はついにそれを理解しました。

于 2012-02-02T06:33:48.187 に答える
5

Proxypass命令をmod_rewriteルールで[P]コードに置き換えることができます。Pはプロキシを意味します。

Mod_rewriteを使用すると、より具体的なことができます。

于 2011-01-03T12:29:56.440 に答える