当使用 nginx 作为上游块中一组服务器的反向代理时,是否有一个变量与未解析的服务器名称相对应?例如,考虑以下配置:
http {
upstream foo {
server foo1.example.com:8080;
server foo1.example.com:8081;
server foo2.example.com:8080;
server foo2.example.com:8081;
}
server {
server_name foo.example.com;
location / {
proxy_pass http://foo;
}
}
}
Run Code Online (Sandbox Code Playgroud)
令foo.example.com
、foo1.example.com
、 和foo2.example.com
分别为解析为 192.0.2.1、192.0.2.2 和 192.0.2.3 的定义名称。
假设有一个请求进来foo.example.com
,nginx决定选择foo2.example.com
8080端口作为上游服务器,请求成功。然后,据我所知,这些将是一些相关变量的值:
$host = foo.example.com
$proxy_host = foo
$upstream_addr = 192.0.2.3:8080
(*)但是,这些值都不与上游服务器配置中给定的值匹配。foo2.example.com:8080
因此,更具体地说,我的问题是:在这种情况下哪个变量(如果有)的值为?
为了避免 XY 问题,这些是我试图完成的事情:
map
上游服务器到另一条更有用的信息,也用于日志记录目的proxy_ssl_name
)(这可能会产生一个自己的问题,但这不是唯一的用例)(*) = 该变量$upstream_addr
似乎并非在请求的所有阶段都可用,例如添加proxy_set_header Upstream-Addr $upstream_addr;
到位置块似乎没有效果,这意味着该变量为空
小智 -2
代理可能很棘手。Nginxproxy_set_header
就是你想要的。Nginx 文档
proxy_set_header Host $host;
Run Code Online (Sandbox Code Playgroud)
在这里查看更详细的代理配置示例
归档时间: |
|
查看次数: |
3072 次 |
最近记录: |