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

Varnish报Backend fetch failed(errno 0/13)问题求助

Varnish 6.6.2 503 Backend Fetch Failed 问题解决

1. 优先排查SELinux限制

AlmaLinux 9 默认启用 SELinux,这是导致Permission denied错误的最常见原因:

  • 临时关闭 SELinux 验证:执行setenforce 0,然后重新测试curl -I -H "Host: <domainname>" http://<server_ip>:80/,如果恢复正常,说明 SELinux 是问题根源。
  • 永久配置 SELinux 规则:
    1. 将 Apache 监听的7080端口加入 SELinux 允许的 HTTP 端口列表:semanage port -a -t http_port_t -p tcp 7080
    2. 允许 HTTP 服务发起网络连接:setsebool -P httpd_can_network_connect 1
    3. 恢复 SELinux 强制模式:setenforce 1

2. 验证Varnish后端配置

  • 确认后端配置的IP和端口准确,避免使用占位符,直接填写Apache实际监听的IP(如127.0.0.1或服务器内网IP)和7080端口。
  • 检查Varnish启动参数中的超时设置,若超时过短可能导致连接中断,可调整启动命令的-t参数(如-t 300设置300秒超时)。
  • 用varnishadm backend.list查看后端状态,确认后端标记为healthy。

3. 检查防火墙规则

  • 确保firewalld允许Varnish访问7080端口:
    firewall-cmd --add-port=7080/tcp --permanent
    firewall-cmd --reload
    
  • 若Apache监听本地回环地址(127.0.0.1),确认防火墙未限制本地回环流量。

4. 验证Varnish运行用户权限

  • 查看Varnish运行用户(默认是varnish),切换到该用户测试连接Apache:
    su -s /bin/bash varnish
    curl -I -H "Host: <domainname>" http://<server_ip>:7080/
    
    若出现权限拒绝,需检查该用户的SELinux上下文或用户组配置,确保其具备网络连接权限。

5. 处理errno 0 (Success)异常

该错误通常是连接被异常中断,可从以下方面调整:

  • 检查Apache的KeepAlive配置,调整KeepAliveTimeout和MaxKeepAliveRequests,避免过早关闭连接。
  • 在VCL中增加后端连接超时配置:
    backend default {
        .host = "<server_ip>";
        .port = "7080";
        .connect_timeout = 5s;
        .first_byte_timeout = 30s;
        .between_bytes_timeout = 10s;
    }
    
    加载并启用新VCL:
    varnishadm vcl.load new_backend /etc/varnish/default.vcl
    varnishadm vcl.use new_backend
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:48:21