リバースプロキシ時にHost:ヘッダーを変えないようにする方法

投稿者: | 2016年12月22日

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>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA