1
dier 2021-07-02 11:47:37 +08:00
你这三个 proxy 是一样的吗?
如果是就用 upstream 如果不就是用多个 location 或 if 来判断 |
2
liuzh365 OP 类似于
location / { // 某种逻辑判断第一个 proxy_pass http://192.168.1.1 // 不行就第二个 proxy_pass http://10.10.1.1 // 不行继续往下 。。。 } 目前路径已经确定了不方便改动,然后暂时也没有加参数的打算 |
4
cpstar 2021-07-02 11:52:10 +08:00
如果 uri 或者参数场景都不能实现。那你靠什么实现 if-else 呢?
|
5
cpstar 2021-07-02 11:53:05 +08:00
如果仅是 2#所述的根据服务器状态来执行,那还是得用 upstream,这就是负载均衡的概念了,而不是仅仅为反代
|
7
dier 2021-07-02 12:06:20 +08:00
我尝试理解一下你的意思
访问 a.d.com/html 跟 a.d.com/api 这个 html 跟 api 对应分别对应在 proxy1 和 proxy2 proxy3 上(三者提供服务不相同)? 如果是这样,要么用多 location 要么就是 if 来判断 |
8
cpstar 2021-07-02 12:07:12 +08:00
|
9
lscho 2021-07-02 12:09:34 +08:00
你说的这个不就是负载均衡吗。。。upstream 可以判断服务器是否正常。
|
10
greenskinmonster 2021-07-02 12:52:27 +08:00
用 try_files 应该可以
i.imgur.com/McIFG23.png |
11
cnoder 2021-07-02 13:17:58 +08:00
openresty 是可以
|
12
zw1027 2021-07-02 14:35:37 +08:00
实现不了就上 lua 自己写逻辑
|
13
maxbon 2021-07-02 14:50:47 +08:00
用变量判断试试,不确定可不可行,比如
if ( xxx ) { set $a 192.168.1.1; } if ( yyy ) { set $a 192.168.1.2; } proxy_pass http://$a; |
14
ryd994 2021-07-03 05:18:42 +08:00
翻译翻译,什么叫“某种逻辑”?什么叫“匹配”?
|
15
dorothyREN 2021-07-03 12:55:14 +08:00
写三个一样的 location proxypass 不同就行了吧,这个是按顺序匹配的
|