我有一个设置(php应用程序)
:: varnish(port 80) - > apache port(8080)
默认情况下,apache会向目录添加尾部斜杠,但是当它执行时会重定向到端口。 e.g。
http:/www.domain.com/folder重定向到http:/www.domain.com:8080 / folder /
这个带端口的网址会导致问题。
所以我尝试添加指令 Directory.Slash在.htaccess文件中关闭,但应用程序不再使用了。例如断链等等
然后我按照上所述尝试更新VCL http://danielmiessler.com/blog/adding-a-trailing-slash-to-directories-using-varnish/
sub vcl_recv {
if ((req.url ~ "/directory" ) && (! (req.url ~ "index.php"))){
set req.url = req.url "/";
}
}
但我收到了错误
Message from VCC-compiler:
Expected ';' got '"/"'
(program line 174), at
('input' Line 14 Pos 26)
set req.url = req.url "/";
-------------------------###-
有人有任何建议吗?
由于
答案 0 :(得分:1)
我建议将重定向逻辑保留在Varnish之外;基本问题是基于DirectorySlash
设置的重定向将在重定向中添加内部Apache端口(8080)。
要修复,请尝试将以下Apache设置添加到Apache配置中(在htaccess中无效):
UseCanonicalName Off
Per Apache's documentation on UseCanonicalName:
使用UseCanonicalName关闭Apache httpd将使用客户端提供的主机名和端口形成自引用URL(如果有)
这意味着即使执行DirectorySlash
重定向,apache也应该尊重Varnish转发的传入客户端端口(80)。