調べてみたところ、同じ問題を抱えている人はたくさんいるようですが、明確な解決策は見つかりませんでした(少なくとも私は見つけられませんでした)。
私は、ポート 88 でリッスンしている Apache 2 Web サーバーのポート 80 でリッスンしているリバース プロキシとして Varnish-Cache (3.0) を使用しています。
次の URL をリクエストすると正常に動作します。http://サーバー/stuff/
しかし、私がこれを要求した場合:http://サーバー/stuff(末尾の「/」なし)、ブラウザはバックエンドApacheのポートにリダイレクトされます(http://サーバー:88/stuff/)。
このような状況で Apache 2 の動作を設定するにはどうすればよいでしょうか?
前もって感謝します!
答え1
httpd.confのUseCanonicalNameディレクティブを確認してください
#
# UseCanonicalName: Determines how Apache constructs self-referencing
# URLs and the SERVER_NAME and SERVER_PORT variables.
# When set "Off", Apache will use the Hostname and Port supplied
# by the client. When set "On", Apache will use the value of the
# ServerName directive.
#
UseCanonicalName Off
ニスで除去することもできます。次のことを試してください:
sub vcl_fetch {
if (beresp.status == 301 || beresp.status == 302)
{
set beresp.http.Location = regsub(beresp.http.Location, "^(\w+://[^/]+):\d+", "\1");
}
}