Varnish 作为 Apache2 服务器的反向代理,端口重定向问题

Varnish 作为 Apache2 服务器的反向代理,端口重定向问题

我一直在寻找,有很多人遇到了同样的问题,但没有明确的解决方案(或者至少我没有找到)。

我正在使用 Varnish-Cache (3.0) 作为反向代理,监听端口 80,为监听端口 88 的 Apache 2 网络服务器监听。

如果我请求以下 URL,它可以正常工作:http://服务器/东西/

但是,如果我提出这样的要求:http://服务器/东西(末尾没有“/”),浏览器将重定向到后端 Apache 的端口(http://服务器:88/东西/)。

在这种情况下,我该如何设置 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"); 
   } 
} 

相关内容