【问题标题】:Varnish always 301 redirectingVarnish 总是 301 重定向
【发布时间】:2017-09-04 11:53:38
【问题描述】:

我有一个 apache 在端口 90 上运行 wordpress。我在它前面放了一个清漆缓存,并在端口 80 上运行清漆。

我正在使用这里的 4.0 vcl:https://github.com/nicolargo/varnish-nginx-wordpress/blob/master/varnish/varnish4-wordpress

当我在 :80 请求我的网站时,我得到 301 重定向到 :90 ...这肯定不是清漆的重点吗?我该如何避免这种情况并保持在 :80 上??

我是清漆/vcl 的新手,所以很遗憾我不知道要寻找什么。我确定它在 VCL 中 :)

相关帖子(但这里也不回答):Why is Varnish redirecting as 301?

【问题讨论】:

    标签: wordpress apache varnish varnish-vcl


    【解决方案1】:

    它肯定不在 VCL 中。但是请注意,最好从提供的default.vcl 开始构建,逐位添加,以了解其工作原理。

    至于为什么它不起作用以及修复它的方法。

    不同的端口(duh)。

    选项 #1。告诉你的 PHP 真正的端口是什么

    也许, 最简单的解决方法是编辑 wp-config.php 并告诉 Wordpress 请求的真正来源。在<?php之后的文件顶部添加:

    $_SERVER['SERVER_PORT'] = 80;
    

    选项 #2。只需使用相同的端口即可。

    您实际上可以在 Varnish 和 Apache 中使用 same 端口号(!)。只需将 Varnish 和 Apache 绑定到不同的接口,但端口号相同。对于 Linux 机器来说,这些是不同的端口,使用相同的端口号没有问题。

    因此 Apache 将拥有:

    Listen 127.0.0.1:80
    

    VCL里会有Varnish:

    backend default {
        .host = "127.0.0.1";
        .port = "80";
    }
    

    选项 #3。不要使用阿帕奇。 Nginx 来救援。

    一个不太容易的解决方法可能是切换到 Nginx,它可以通过简单的一行配置轻松绕过“重定向端口”问题:

    port_in_redirect off;
    

    Wordpress 基本 URL。

    如果 Wordpress 站点 URL(在 wp-admin 中)设置为包含端口号,那么它自然会重定向您。 Wordpress 站点 URL 中不应出现端口号。

    额外提示:Fix Wordpress Jetpack in Varnish.

    【讨论】:

    • “你实际上可以在 Varnish 和 Apache 中使用相同的端口号(!)。”不,您正在设置 backend,这是 Varnish 将从中提取的源内容。通过/etc/sysconfig/varnish 或通过启动脚本来更改 Varnish 端口
    • @DonWilson 什么“不”? :) 我说的是“不同的接口”。这意味着如果您将 Varnish 设置为侦听 1.2.3.4(您的外部 IP)和端口 80,您可以仍然让 Apache 侦听 127.0.0.1 和端口80. 因为本质上它们是不同的端口(因为它们在不同的接口上)
    猜你喜欢
    • 2016-09-25
    • 2011-12-17
    • 1970-01-01
    • 2019-04-12
    • 2017-01-24
    • 2016-09-30
    • 1970-01-01
    • 2010-09-26
    • 2018-07-23
    相关资源
    最近更新 更多