我有一个配置的nginx服务器使用queryparam作为上游哈希.网址如下所示
http://www.my-server.com/xyz/WXYZ?abc=123
Run Code Online (Sandbox Code Playgroud)
并配置如下
upstream test {
hash $arg_abc;
....
}
Run Code Online (Sandbox Code Playgroud)
有没有可能使用WXYZURL的一部分作为上游哈希?
WXYZ是动态值,xyz并且总是相同的,并且会在那里.
这是我试过的,
location ~ ^/xyz/(.).*$ {
hash $1
}
Run Code Online (Sandbox Code Playgroud)
部署指南明确表示可能:
通用散列方法:向其发送请求的服务器是从用户定义的密钥确定的,该密钥可以是文本,变量或它们的组合.例如,密钥可以是源IP和端口,或URI:
upstream backend {
hash $request_uri consistent;
server backend1.example.com;
server backend2.example.com;
}
Run Code Online (Sandbox Code Playgroud)
哈希键是$ request_uri,可以用$ arg_your_key替换,但不确定是否适用于上游块,但它应该作为proxy_pass值工作:
location /xyz {
proxy_pass http://localhost/$uri$is_args$args;
}
Run Code Online (Sandbox Code Playgroud)
不知道的要求,但如果你需要使用基于参数某些后台$ arg_abc你需要映射功能,就像这里:
map $arg_abc $backend_server {
default 'serverdefault.domain.com:80';
123 'server1.domain.com:80';
234 'server2.domain.com:80';
345 'server3.domain.com:80';
}
server {
location / {
proxy_pass http://$backend_server;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8802 次 |
| 最近记录: |