需求
由A服务器发送一条请求(POST),复制成两条请求以不同的URL同时转发给B服务器和C服务器。
例子:A发送 http:
谈下试错过程
1. 使用反向代理,无法复制请求
2. 使用重定向,post内容不支持,同时无法复制请求
3. 使用upstream来复制访问请求,同时给自己多个不同端口来拦截,拦截后反向代理,并没有被拦截到,这种方式属于负载均衡一类的,无法做到同时发送
最后方案
使用nginx提供的 mirror模块,其实这种需求有个专业的叫法:**引流测试**。你搜下这个就会有很多相关的文章了。
配置实现
最终配置也很简单,在正常的反向代理部分写上 mirror /mirror
配置文件
include mime.types
default_type application/octet-stream
sendfile on
keepalive_timeout 65
upstream self{
server 192.168.0.74:8080
}
server {
listen 8888
server_name a.com
location /a {
mirror /mirror
proxy_pass http://b.com/b
}
location = /mirror {
internal
proxy_pass http://c.com/c
}
}
扩展