Я искал, и у многих людей такая же проблема, но четкого решения нет (или, по крайней мере, я его не нашел).
Я использую Varnish-Cache (3.0) в качестве обратного прокси-сервера, прослушивающего порт 80 для веб-сервера Apache 2, прослушивающего порт 88.
Если я запрашиваю следующий URL, то все работает нормально:http://сервер/вещи/
Но если я попрошу это:http://сервер/вещи(без "/" в конце), браузер перенаправляется на порт бэкэнда Apache (http://сервер:88/stuff/).
Как настроить поведение Apache 2 в этой ситуации?
Заранее спасибо!
решение1
Проверьте директиву UseCanonicalName в 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
Вы также можете удалить его с лака, попробуйте это:
sub vcl_fetch {
if (beresp.status == 301 || beresp.status == 302)
{
set beresp.http.Location = regsub(beresp.http.Location, "^(\w+://[^/]+):\d+", "\1");
}
}