首页 > 解决方案 > Nginx 通过 varnish 服务器通过公共 IP 访问它时返回 404

问题描述

我正在尝试通过 varnish(client<-varnish<-nginx) 提供静态内容,但我在通过公共 IP 访问它时遇到问题。Varnish 在本地访问时工作正常(varnish 正在运行),但在通过公共 IP 访问时抛出状态 404。

我的流程如下所示:

Client--> Caching_Server[NGINX(仅用于 SSL 支持)-> Varnish] --> Origin_Server[Nginx]

我的清漆服务器配置很简单:

probe healthcheck {
    .url = "http://10.10.10.3/healthcheck";
    .timeout = 2s;
    .interval = 30s;
    .window = 5;
    .threshold = 3;
}
backend default {
    .host = "10.10.10.3";
    .port = "80";
    .probe = healthcheck;
}



sub vcl_recv {

    if (req.url ~ ".ts$") {
     unset req.http.Cookie;
    }

    set req.backend_hint = default;
}

我还检查了 Nginx 日志,我看到它抛出 404,这解释了为什么 varnish 以 404 响应。但我的问题是为什么当我使用 localhost 在本地测试它时它会工作。

标签: nginxvarnishvarnish-vcl

解决方案


的输出varnishlog -g request -q "ReqUrl eq '/'"可能会给您问题的答案。

在内部发送请求和来自 Internet 的请求时运行命令。比较输出,看看哪里有区别。

如果您需要帮助,请将这两个请求的日志添加到您的问题中,我会帮助您检查情况。


推荐阅读