如何使用Nginx反映流量

时间:2020-01-09 10:39:31  来源:igfitidea点击:

随着Nginx 1.13的发布,有一个新的模块mirror,该模块允许我们将流量镜像到其他后端。此功能将是有益的一种情况是分析。我们可以重新配置几行配置到Nginx,而不是重新架构基础架构。

本教程将指导我们启用模块,然后将流量镜像到后端服务器。

使用镜像的情况

无风险的性能和质量保证测试

无论我们多么相信自己的创造力,都无法通过大量测试来应对生产环境的冲击。用户仅会在如何破坏应用程序方面胜过我们。

通过将请求镜像到后端QAT环境来消除风险。

应用监控

例如,应用程序监视会消耗很多宝贵的资源。可以通过在所有生产应用程序主机上安装代理来浪费它们,而可以将服务器或者服务器集群专用于将所有请求镜像到。

与应用程序监视类似,捕获分析通常需要在生产服务器上安装代理。减轻这些服务器的负担,并将它们放在其他位置。通过将所有请求镜像到Analytics(分析)后端,我们可以捕获相同的数据而不会影响生产服务器。

文件上传

我们可能有一个由多个后端主机驱动的WordPress博客。镜像可用于确保所有文件上传都同时上传到所有主机。

创建镜像

创建一组后端服务器,我们将所有请求镜像到该后端服务器。

upstream backend_mirrors {
     server host1.example.com
}

修改要镜像所有请求的位置。添加新的镜像指令。如果我们想镜像整个请求主体,则也添加新的mirror_request_body指令。

location / {
     mirror /mirror;
     mirror_request_body on;
     root /usr/share/nginx/html;
     index index.html index.html
}

设置一个仅接受内部访问的镜像。这样可以防止其他人
能够直接从Internet访问/ mirror。请求的URI将发送到镜像。

location /mirror {
     internal;
     proxy_pass https://backend_mirrors;
     proxy_set_header X-SERVER-PORT $server_port;
     proxy_set_header X-SERVER-ADDR $server_addr;
     proxy_set_header HOST $http_host;
     proxy_set_header X-REAL-IP $remote_addr;
}

重新启动Nginx使更改生效。