复制并向另一个nginx服务器发送请求以进行真正的stream量testing

我有一个在uwsgi + nginx上运行的Flask web服务,它运行良好。

我有另一个服务器上运行的另一个开发版本的服务。 它也运行在uwsgi + nginx上。

我想要做的是,testing开发服务器'真正'的stream量(POST请求)我已经做了validation开发服务器基本上工作良好。 只是想比较两个相同的实际stream量。

我的基本想法如下:

(A)是传统服务器(B)是testing服务器

  1. 用户请求

  2. Nginx(A)获取请求并将请求传递给uwsgi(A)进行处理。

  3. Nginx(A)“复制”请求并将其交给Nginx(B)进行testing

  4. uwsgi(A)在Flask App(A)中处理请求并响应用户(通过Nginx(A))

  5. Nginx(B)像传统服务器一样处理请求,但不响应用户(只是日志logging)

这是有道理的吗? 我应该采取什么方法?

我自己find了解决scheme。 所以我在这里分享我的发现。

我用这个post_action指令 。

location / { uwsgi_pass unix:app.sock; post_action @post_action; } location @post_action { proxy_pass http://dst_host:dst_port; } 

请求首先传递给unix:app.sock,并在完成时,post_action指令将请求传递给指定位置@post_action。

它就像一个魅力!