【发布时间】:2020-10-28 06:32:48
【问题描述】:
有 3 台服务器
“server3”运行 nginx 和两个后端服务器(server1,server2)。
在 server3 上得到以下配置:
server {
listen 80;
location @onerror {
return 302 http://server2.com$request_uri;
}
location / {
proxy_connect_timeout 1s;
proxy_pass http://server1.com/;
error_page 400 401 402 403 404 405 500 501 502 503 504 @onerror
}
}
我的目标是,请求到达 server3 并尝试 server1,如果无法连接或出现其他错误,它会重定向到 server2。
这工作得很好,但没有完全“优化”,因为如果 server1 工作,所有流量都通过 server3,这并不是真正需要的,因为 302 重定向会完成这项工作,并且客户端将被重定向到 server1。
如果 server1 启动并运行所有客户端都需要使用它,则负载平衡不是一个选项,只有当它关闭时客户端才需要使用 server2。
现在我的问题,
我可以将 nginx 配置为“尝试”连接到 server1 的任何方式,如果它有效,请不要使用 proxy_pass 而是使用 302 重定向?
提前致谢。
【问题讨论】: