1
Jeremial 2024-03-07 11:46:18 +08:00
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 2024-03-07 11:54:06 +08:00
看起来得上 lua 脚本了
|
4
angryfish 2024-03-07 11:57:04 +08:00
我曾经也有这个需求。
单纯 nginx 没搞出,用 node 写了个转发。 关注一下纯 nginx 的方案。 |
5
deorth 2024-03-07 11:59:43 +08:00 via Android ![]() 你打算把哪个响应返回给客户端?
|
6
wu00 2024-03-07 11:59:56 +08:00
这不是 proxy ,而是 mirror ,可以搜一下 nginx mirror
你这个需求放到业务层面去处理应该合理一点,比如 a,b 响应成功,c ,d 响应 500 咋整 |
![]() |
7
cdlnls 2024-03-07 12:01:10 +08:00
用 lua 脚本应该能实现,脚本很简单,问下一下 ai 就可以了。
大致流程是,访问的时候,lua 一个 for 循环去请求那几个地址就可以了。还可以根据需要,处理一下接口的响应信息。 |
8
nanwangnongfu 2024-03-07 12:32:21 +08:00
感觉可以考虑 MQ 的消息广播
|
9
yinmin 2024-03-07 13:12:54 +08:00 via iPhone
逻辑有点问题,同时发送到多个地址,nginx 没法选返回的结果页面用哪个。需要自己写一个程序吧
|
![]() |
10
cxsz 2024-03-07 13:13:46 +08:00
nginx 可以调用 js ,用 js 写一个脚本吧
|
11
F7TsdQL45E0jmoiG 2024-03-07 13:35:12 +08:00
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 2024-03-07 23:05:42 +08:00
openresty ,上 lua 脚本,或者用 nginx 的流量复制,可以的
|
13
lm930129 2024-03-07 23:31:54 +08:00
你这个难道不是应该后端配置地址数组么,后端实现调用的时候判断是否成功吧
|
14
lidapang 2024-03-08 09:48:07 +08:00
Nginx 流量镜像,可以的
|