将 HTTP 请求代理到多台机器

将 HTTP 请求代理到多台机器

我有

  • 一个名为legacy-service的服务
  • 另一个名为 dev-service 的服务
  • 大量 HTTP 请求到达遗留服务

有没有办法将 HTTP 请求同时代理到旧服务和新服务,而无需编写自定义实用程序?这样我就可以在实际流量上测试我的开发服务,而无需关闭旧服务。

答案1

是的,您可以使用上游模块让 nginx 将请求负载平衡到不同的后端。

在全局块中:

upstream backend {
    server unix:/dev/shm/.php-fpm/socket;
    server unix:/dev/shm/.php-fpm/socket2;
}

或者,如果您希望请求发送到其他机器而不是不同的 PHP 实例,请使用服务器 IP 地址或域名。

然后在服务器块中:

location ~ \.php$
{
    include fastcgi_params;
    fastcgi_pass backend;
    fastcgi_index index.php;
    fastcgi_send_timeout 15;
    fastcgi_read_timeout 15;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

后端也可以是 IP/域名,以允许您负载平衡到其他机器。

相关内容