变量$host、$http_host、$proxy_host区别

// 如果想让Host是crmtest.aty.sohuno.com,则进行如下设置:
proxy_set_header Host crmtest.aty.sohuno.com;

// 如果不想改变请求头“Host”的值,可以这样来设置:
proxy_set_header Host $http_host;

// 但是,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。
// 这种情况下,更好的方式是使用$host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名:
proxy_set_header Host $host;

// 此外,服务器名可以和后端服务器的端口一起传送:
proxy_set_header Host $host:$proxy_port;

// 如果某个请求头的值为空,那么这个请求头将不会传送给后端服务器:
proxy_set_header Accept-Encoding "";

 

变量 是否显示端口 值是否存在
$host

"Host:value"显示

值为a:b的时候,只显示a

$http_host "Host:value",value存在就显示
$proxy_host

默认80不显示

其他端口显示

"Host:value"显示

假设客户端请求的 URL 为 http://example.com:8080/index.html,那么:
$host 变量的值为 example.com
$http_host 变量的值为 example.com:8080

==========================================================================

proxy_pass:定义后端服务器的地址。
proxy_set_header:修改从客户端传递到代理服务器的请求头。
proxy_hide_header:隐藏从代理服务器返回的响应头。
proxy_redirect:修改从代理服务器返回的响应头中的Location和Refresh头字段。

=========================================================================

策略名称 描述 示例
RR (round robin) 默认的负载均衡方法,按时间顺序逐一分配到不同的后端服务器 upstream web_servers { server localhost:8081; server localhost:8082; }
热备 当主服务器发生故障时,才将流量转发到备用服务器 upstream web_servers { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; }
权重 根据预设权重分配请求,权重越高的服务器接收的请求越多 upstream web_servers { server localhost:8081 weight=1; server localhost:8082 weight=2; }
ip_hash 根据客户端IP地址的hash结果分配请求,确保特定客户端IP的请求总是发给同一个后端服务器 upstream test { ip_hash; server localhost:8080; server localhost:8081; }
fair (第三方) 根据后端服务器的响应时间分配请求,响应时间短的优先分配 upstream backend { fair; server localhost:8080; server localhost:8081; }
url_hash (第三方) 根据请求的URL的hash结果分配请求,确保同一个URL的请求总是发给同一个后端服务器 upstream backend { hash_method crc32; hash $request_uri; server localhost:8080; server localhost:8081; }
posted @ 2024-03-05 14:29  酒哥-颢远  阅读(413)  评论(0编辑  收藏  举报