You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Varnish配置后Apache虚拟主机DocumentRoot异常问题求助

解决Varnish转发后Apache虚拟主机匹配异常问题
  • 确认Varnish转发时保留原始Host头
    Apache虚拟主机依赖Host请求头匹配站点,若Varnish转发时修改或丢失该头,Apache会自动 fallback 到默认站点。检查/etc/varnish/default.vcl的vcl_recv段,强制保留客户端发送的Host头:

    sub vcl_recv {
        # 禁止Varnish自动修改Host头,确保完整传递给Apache
        set req.http.Host = req.http.host;
        # 其他业务规则...
    }
    
    backend default {
        .host = "127.0.0.1";
        .port = "8080";
    }
    
  • 修正Apache虚拟主机的监听端口
    由于Apache已改为监听8080,需确保对应虚拟主机配置的<VirtualHost>指令包含8080端口(Virtualmin生成的配置文件通常在/etc/apache2/sites-available/目录下):

    <VirtualHost *:8080>
        ServerName your-domain.com
        DocumentRoot /home/dewebshop/magento2/pub
        # 其余Virtualmin生成的配置项...
    </VirtualHost>
    

    执行sudo a2ensite your-domain.conf启用站点,再重启Apache:sudo systemctl restart apache2

  • 修复Varnish健康检查404问题
    默认健康检查未携带正确Host头,导致Apache返回默认站点的404。修改backend配置,给健康检查指定目标域名的Host头:

    backend default {
        .host = "127.0.0.1";
        .port = "8080";
        .probe = {
            .url = "/";
            .request = "GET / HTTP/1.1"
            "Host: your-domain.com"
            "Connection: close";
            .interval = 5s;
            .timeout = 2s;
        }
    }
    
  • 重启Varnish生效配置
    执行sudo systemctl restart varnish,用curl -I http://your-domain.com测试:若返回X-Varnish头,且内容来自/home/dewebshop/magento2/pub,则配置生效。

  • 锁定Virtualmin的Apache端口设置
    进入Virtualmin后台的服务器配置 > 网站选项,将Apache监听端口设为8080,防止Virtualmin自动重置为80端口覆盖配置。

内容的提问来源于stack exchange,提问作者user1978645

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 03:22:08