Ich habe gesucht und es gibt viele Leute mit dem gleichen Problem, aber es gibt keine klare Lösung (oder zumindest habe ich keine gefunden).
Ich verwende Varnish-Cache (3.0) als Reverse-Proxy, der auf Port 80 für einen Apache 2-Webserver lauscht, der auf Port 88 lauscht.
Wenn ich die folgende URL anfordere, funktioniert es einwandfrei:http://server/zeug/
Aber wenn ich dies anfordere:http://server/zeug(ohne den "/" am Ende) wird der Browser auf den Port des Backends Apache umgeleitet (http://server:88/stuff/).
Wie kann ich das Verhalten von Apache 2 in dieser Situation einrichten?
Dank im Voraus!
Antwort1
Überprüfen Sie die UseCanonicalName-Direktive in httpd.conf
#
# 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
Sie können es auch mit Lack entfernen. Versuchen Sie Folgendes:
sub vcl_fetch {
if (beresp.status == 301 || beresp.status == 302)
{
set beresp.http.Location = regsub(beresp.http.Location, "^(\w+://[^/]+):\d+", "\1");
}
}