1

2次の構成があります。

---443-> Load-Balancer-1 ---80> Apache-Proxy ---8080> Tomcat
---443-> Load-Balancer-2 ---81> Apache-Proxy ---8081> Tomcat
---443-> Load-Balancer-3 ---82> Apache-Proxy ---8082> Tomcat

Apache サーバーには、異なるポート 80、81、81 を介していくつかのエントリがあります。Apache ポートごとに Tomcat リッスン ポートがあります。単純化された構成は次のとおりです。

  <VirtualHost *:80 *:81 *:82>
     RewriteRule ^/(.*) ://localhost:80<xx>/$1 [P,L]
  </VirtualHost>

上記の構成では、物理的な apache ポート番号の代わりに<xx>使用する必要があります。この場合、80、81、または 82 です。

使ってみ%{SERVER_PORT}ましたが、決して物理ポートではありません。の場合はUseCanonicalName Off、ロード バランサーのポートです (私の例では 443)。の場合はUseCanonicalName On、Apache 構成で構成されたポートの 1 つです。私の場合、それは常に82でした。

UseCanonicalPhysicalPort On|Offディレクティブは、理論的にはこの問題を解決するように設計されていますが、仮想ホストの構成には十分な柔軟性がないようです。

http://httpd.apache.org/docs/current/mod/core.html#usecanonicalphysicalport

SERVER_PORTとしてCGI変数にアクセスしようとしまし%{ENV:SERVER_PORT}たが、存在しませんでした。

を使用して問題を回避しようとしましたSetEnvIfが、このディレクティブはポート番号にまったくアクセスできません (なぜですか?)。

現在の作業ソリューションは、3 つの異なる仮想ホストを作成し、ポート番号をハードコードすることでしたが、私はそれが好きではありません。

4

0 に答える 0