如何在nginx中实现部分镜像?

sme*_*its 5 nginx mirror testing mirroring

我想测试一个服务器的早期新版本,为此我想在我的测试服务器上镜像到生产服务器的真实请求的一部分

镜像模块允许我对所有流量进行镜像,但我还没有找到如何执行请求的部分镜像,例如,我想镜像30%的流量。

这可能吗?如果是这样,如何?

Tom*_*iie 3

如果您有两台 Web 服务器,并且希望将 30% 的请求发送到服务器A,将 70% 的请求发送到服务器B,则可以在这两台 Web 服务器之前放置一个负载均衡器。无论如何,您都必须在两台 Web 服务器前面放置一个负载平衡器,否则所有流量只会流向一台服务器或另一台服务器。

使用权重,您可以指定应有多少流量流向第一台或第二台服务器。下面给出一个简单的例子:

http {
  upstream myapp1 {
    server srv1.example.com weight=3;
    server srv2.example.com weight=7;
  }
  server {
    listen 80;
    location / {
      proxy_pass http://myapp1;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:由于两台服务器都是生产服务器,您可以使用srv1.example.commirror上的模块将 30% 的流量发送到测试服务器。同意,这有点肮脏,所以当给出更好的解决方案时,请随意投反对票。

编辑 2:如果您只有一台服务器,则将相同的 IP 地址分配给两个 DNS A 记录。