1 wyntau 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 GBdG6clg2Jy17ua5 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 cctv6 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 流量镜像,可以的 |