Apacheでリバースプロキシを設定する際、下記のオプションを加えます。
ProxyPreserveHost On
この設定が有効になっている場合、ProxyPass で指定したホスト名の代わりに、受け付けたリクエストの Host: 行を プロキシ先のホストに送ります。
かなりピンポイントなネタになりますがこの設定が必要になる場面が発生しました。
JSPを使用したあるWEBシステムでリバースプロキシを使用したところ、リンク先のURLがおかしくなりました。
下記のようにリンク先のURLをPageContextのRequestオブジェクトを使用して自身のホスト名を指定しているシステムがありました。
このシステムでリバースプロキシを使用するとURLにリバースプロキシ先のホスト名がそのままURLに設定されてしまいました。
<c:set var="req" value="${pageContext.request}" /> <c:set var="serverHost" value="${req.scheme}://${req.serverName}" /> <a href="${serverHost}/site">link</a>