![将 HTTP 请求代理到多台机器](https://linux22.com/image/608272/%E5%B0%86%20HTTP%20%E8%AF%B7%E6%B1%82%E4%BB%A3%E7%90%86%E5%88%B0%E5%A4%9A%E5%8F%B0%E6%9C%BA%E5%99%A8.png)
我有
- 一个名为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/域名,以允许您负载平衡到其他机器。