gpt4 book ai didi

Varnish host_header不会发送到后端

转载 作者:行者123 更新时间:2023-12-03 17:46:45 24 4
gpt4 key购买 nike

我试图用需要精确主机名的两个后端运行 Varnish 。但是我的nginx收到了本地主机主机头。

这是我的配置:

probe healthcheck {
.url = "/";
.interval = 5s;
.timeout = 15s;
.window = 5;
.threshold = 3;
}

# Define the list of backends (web servers).
# Port 443 Backend Servers for SSL
backend bimer1 {
.host = "nginx-proxy";
.host_header = "site1.example.com.br";
.port = "80";
.probe = healthcheck;
}

backend bimer2 {
.host = "nginx-proxy";
.host_header = "site2.example.com.br";
.port = "80";
.probe = healthcheck;
}

这是我的Nginx访问日志:

bimer-cache-nginx-ssl-proxy_1 | 172.17.0.3--[21/Jun/2017:13:41:47 +0000]“POST/ws/Servicos/Geral/Localizacoes.svc/REST/LocalizarPessoas HTTP/1.1” 502575“-”“Mozilla/5.0( X11; Linux x86_64)AppleWebKit/537.36(KHTML,例如Gecko)Chrome/59.0.3071.104 Safari/537.36“<-> localhost 172.17.0.1,172.17.0.3

似乎将host_header参数设置为backend不适用于常规请求。但是健康检查运行良好。

最佳答案

Varnish是透明的HTTP代理。它将客户端(您的浏览器)发送给它的所有Host header 转发到后端。因此,如果您通过http://localhost/访问它,那么localhost是您的后端将在Host header 中看到的内容。

此外,您绝不应该在Varnish后端定义中使用DNS名称。它应该看起来像这样:

backend bimer1 {
.host = "1.2.3.4";
# ... etc.

目前,您配置的后端解析为 相同的机器nginx-proxy。另外,access.log的结果也不来自运行状况检查。 (您配置的运行状况检查将显示为对根URL/的访问权限)

也许您误解了Varnish配置。如果您的计划是通过同一台计算机来服务多个网站,那么您应该只使用一个后端。多个后端适用于多台计算机。

关于 Varnish host_header不会发送到后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44677939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com