0

4つのポート(一部のポートはHTTPSを使用するため仮想ホストを使用)でApacheを構成しました。目的は、他のマシンのTOMCATインスタンスで実行されているさまざまなサーブレットにポストリクエストをリダイレクトすることです。呼び出しはhttpclient(javaクライアント)から行われます。クライアントを実行すると、エラー301エラー:永続的に移動しました。この問題を解決する方法に関するヒント/ヒント/ヘルプが必要です。

誰かが私に例を教えてくれたらいいのにと思います。私の仮想ホスト(リダイレクトあり)は次のようになります

<VirtualHost _default_:3334>
  RewriteEngine On
  RewriteRule ^/$ https://192.168.100.23:38443/Lang/Englangservices/Alapbhet_service
<\VirtualHost>

これで、modプロキシをmod rewriteで動作させることができ、302エラーは発生しませんが、初心者には常に発生するため、この別の問題があります。

HTTPPOSTリクエストが機能していません。postリクエストを発行すると、プロキシはindex.htmを探し続けるため失敗します。

私のhttpd.confスニペット

<VirtualHost *:3331>
  ServerName localhost:3331
  ProxyPass / http://192.168.100.23:38443/Lang/Englangservices/Alapbhet_service
  ProxyPassReverse / http://192.168.100.23:38443/Lang/Englangservices/Alapbhet_service
  RewriteEngine on
  RewriteRule ^/$ http://localhost:3331/
</VirtualHost>
4

4 に答える 4

3

mod_jk は、すでに指定されている mod_proxy に追加される別のオプションです。(スペースを入れて申し訳ありません。そうしないと、書式設定が台無しになります)

どちらも apache 拡張機能であり、apache がリクエストを消費し、それを透過的に tomcat に転送し、応答を待ってから結果を送り返すことができます。

私見 mod_jk にはいくつかの利点があります

  • Tomcat は、提供されたホスト名、プロトコル、およびポートを自動的に取得します (mod_proxy を使用すると、コネクタでプロキシされるという事実を構成する必要があります。オプションのproxyName および proxyPortを参照してください)。
  • mod_jk は負荷分散を提供します - これが必要な場合
  • apache は、このタスク用に設計されたプロトコル (ajp13) で tomcat と通信します。mod_proxy を使用すると、http を使用するため、オーバーヘッドがわずかに高くなります (開示: 自分で測定したことはなく、オウム返しにすぎません)。

最終的に何を使用するかは、完全にあなたの選択です。両方のオプション大きな違いはありません。(もしそうなら、誰かが私を訂正します)

設定は次のとおりです(テストされていない疑似コード。ドキュメントを読んでください。何をしているのか理解してください...)

# somewhere in httpd.conf, above the virtual hosts
JkWorkersFile /etc/apache2/workers.properties
JkLogFile     /var/log/apache/mod_jk.log
JkLogLevel    error

# your existing part with virtual hosts
<VirtualHost ...>
   ....
   JkMount /Lang/* tomcat1
   JkMount /Lang   tomcat1  # if you need the directory itself also to be forwarded
   ....
</VirtualHost>

# the workers.properties file described above
# 'tomcat1' is the reference used above as argument to JkMount
workers.list=tomcat1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
于 2008-12-17T19:32:44.327 に答える
2

本当にリダイレクトしたい場合は 301 が適切な応答のように聞こえますが、クライアントがリダイレクトを認識しないように、本当にリクエストをプロキシしたかったのでしょうか? この場合、mod_proxyをリバース プロキシとして使用することを検討してください。

于 2008-12-17T13:57:11.870 に答える
0

Java の httpclient は、301 回答を適切に処理する必要があります。そうでない場合は、壊れています。したくない、またはできない場合は、Paul が示すようにmod_rewrite / mod_proxyを使用して「透過的に」リダイレクトする方法があります。こちらをご覧ください

于 2008-12-17T14:06:48.527 に答える