Apache2 サーバーのリバース プロキシとしての Varnish、ポート リダイレクトの問題

Apache2 サーバーのリバース プロキシとしての Varnish、ポート リダイレクトの問題

調べてみたところ、同じ問題を抱えている人はたくさんいるようですが、明確な解決策は見つかりませんでした(少なくとも私は見つけられませんでした)。

私は、ポート 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"); 
   } 
} 

関連情報