【问题标题】:Apache/varnish trailing slash with port issue带有端口问题的 Apache/varnish 斜杠
【发布时间】:2014-09-21 12:59:53
【问题描述】:

我有一个设置(php 应用程序)

:: 清漆(端口 80)-> apache 端口(8080)

默认情况下,apache 会在目录中添加尾部斜杠,但当它这样做时,它会使用端口重定向。例如

http:/www.domain.com/folder 重定向到 http:/www.domain.com:8080/folder/

这个带有端口的 url 会导致问题。

所以我尝试添加指令 .htaccess 文件中的 DirectorySlash Off,但应用程序不再运行良好。例如断开的链接等

然后我尝试按照上所述更新 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 "/";
-------------------------###-

有人有什么建议吗?

谢谢

【问题讨论】:

    标签: apache varnish varnish-vcl


    【解决方案1】:

    我建议将重定向逻辑排除在 Varnish 之外;根本问题是基于DirectorySlash 设置的重定向将在重定向中添加内部Apache 端口(8080)。

    要解决此问题,请尝试将以下 Apache 设置添加到您的 Apache 配置中(在 htaccess 中不起作用):

    UseCanonicalName Off
    

    Per Apache's documentation on UseCanonicalName:

    如果 UseCanonicalName 关闭,Apache httpd 将使用客户端提供的主机名和端口(如果提供)形成自引用 URL

    这意味着 apache 应该尊重 Varnish 转发的传入客户端端口 (80),即使在执行 DirectorySlash 重定向时也是如此。

    【讨论】:

    • 嗨,杰夫,非常感谢您的建议。它实际上让我更详细地查看了我的虚拟主机文件,看起来 serverName 和 serverAlias 没有设置。设置完成后,一切都按预期工作。
    • 在将sites-enabled/000-default.confapache2.conf 中的UseCanonicalName 设置为Off 之后(当然是重新启动了Apache 和varnish),8080 重定向仍然发生。有什么线索吗?
    猜你喜欢
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多