我有一个视频转换 php 脚本,我想通过将流量转移到托管在不同专用盒子上的各个子域来以最简单的方式实现负载平衡。
所以基本上需要做的是让用户在访问 www.mydomain.com 时依次重定向到 server1.mydomian.com、server2.mydomian.com、server3.mydomian.com……依此类推。
请建议如何通过 apache 或 nginx 实现这一点,以及更好的选择是什么?
答案1
您可以使用 mod_proxy 和 mod_balancer_proxy 通过 Apache 实现此目的。
如果您依赖 PHP 会话,请阅读本文: http://www.markround.com/archives/33-Apache-mod_proxy-balancing-with-PHP-sticky-sessions.html
Apache 配置非常简单:
假设你运行的是 debian:
apt-get install apache2
a2enmod proxy
a2enmod proxy_balancer
转到 /etc/apache2/conf.d 并创建一个文件.. 我们将其命名为 load-balancer。将其放入其中:
ProxyPass / balancer://lbcluster/
ProxyPassReverse / balancer://lbcluster/ # The trailing slash is important!
ProxyPreserveHost On # This will preserce the host header for the backend servers
<Proxy balancer://lbcluster>
BalancerMember http://10.242.56.23
BalancerMember http://10.242.56.24
</Proxy>
你就可以出发了 :)
启动您的浏览器并阅读一些 Apache 文档,以获取有关如何根据您的需求进行微调的知识。
答案2
使用 nginx 你可以尝试这个:
http {
upstream mydomain {
server server1.mydomain.com;
server server2.mydomain.com;
server server3.mydomain.com;
}
server {
listen 80;
server_name www.mydomain.com;
location / {
rewrite ^(.*)$ http://mydomain/$1 break;
}
}
从未测试过,所以 YMMV。