1
Jeremial 243 天前
nginx upstream
https://nginx.org/en/docs/http/ngx_http_upstream_module.html upstream backend { server backend1.example.com weight=5; server backend2.example.com:8080; server unix:/tmp/backend3; server backup1.example.com:8080 backup; server backup2.example.com:8080 backup; } server { location / { proxy_pass http://backend; } } |
2
hayhong123 OP @Jeremial 我想的是 同时转到多个地址上 不是轮询或者 ip_hash 之类的负载 请问大佬这个需要怎么改一下哈?
|
3
Kinnice 243 天前
看起来得上 lua 脚本了
|
4
angryfish 243 天前
我曾经也有这个需求。
单纯 nginx 没搞出,用 node 写了个转发。 关注一下纯 nginx 的方案。 |
5
deorth 243 天前 via Android 2
你打算把哪个响应返回给客户端?
|
6
wu00 243 天前
这不是 proxy ,而是 mirror ,可以搜一下 nginx mirror
你这个需求放到业务层面去处理应该合理一点,比如 a,b 响应成功,c ,d 响应 500 咋整 |
7
cdlnls 243 天前
用 lua 脚本应该能实现,脚本很简单,问下一下 ai 就可以了。
大致流程是,访问的时候,lua 一个 for 循环去请求那几个地址就可以了。还可以根据需要,处理一下接口的响应信息。 |
8
nanwangnongfu 243 天前
感觉可以考虑 MQ 的消息广播
|
9
yinmin 243 天前 via iPhone
逻辑有点问题,同时发送到多个地址,nginx 没法选返回的结果页面用哪个。需要自己写一个程序吧
|
10
cxsz 243 天前
nginx 可以调用 js ,用 js 写一个脚本吧
|
11
F7TsdQL45E0jmoiG 243 天前
local ngx = ngx
function content_by_lua_block(r) local servers = { "http://b.com/api/message", "http://c.com/api/message", "http://d.com/api/message", } local i = 1 for _, server in ipairs(servers) do ngx.req.set_uri(server) ngx.req.set_method("GET") ngx.say("") i = i + 1 end end 大概就这样 |
12
flavoury 243 天前
openresty ,上 lua 脚本,或者用 nginx 的流量复制,可以的
|
13
lm930129 243 天前
你这个难道不是应该后端配置地址数组么,后端实现调用的时候判断是否成功吧
|
14
lidapang 242 天前
Nginx 流量镜像,可以的
|