nginx - 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 在本地测试它时它会工作。
解决方案
的输出varnishlog -g request -q "ReqUrl eq '/'"
可能会给您问题的答案。
在内部发送请求和来自 Internet 的请求时运行命令。比较输出,看看哪里有区别。
如果您需要帮助,请将这两个请求的日志添加到您的问题中,我会帮助您检查情况。
推荐阅读
- java - EclipseLink 是否有类似 Hibernate Interceptors 的功能?
- ios - 在 iOS 上阅读保修到期日期
- r - 如何从 dbconnect 数据库加速 collect()
- c# - dbConn.Open 里面使用
- html - 在提交时给无效的表单输入红色边框
- php - 本地 IIS 安装不显示 phpinfo 页面
- swift - 如何将 cURL 转换为 Swift?
- spring-boot - 如何在 JPA 中使用 @onetomany 关系更新实体
- elasticsearch - 如何为 Elasticsearch 中动态添加的属性将默认映射设置为“关键字”
- c - ANSI C (C89) 中的 Stdint.h