【Nginx】负载均衡的配置
使用nginx可以方便的进行负载均衡的配置,可以将nginx用作反向代理负载均衡转发所有请求,也可以只是负载均衡cgi请求。
1、负载均衡转发所有请求,使用proxy_pass配置;这里事先配置好其他web server
http { upstream servers { server servers1.com; server servers2.com; server servers3.com; } server { listen 80; location / { proxy_pass http://servers; } } }
2、负载均衡转发cgi请求,使用fastcgi_pass配置;这里可以在同一台服务器上启动两个php-fpm(性能上比一个处理得快),nginx转发cgi请求时做负载均衡
http {
upstream phpfpm{
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 192.168.1.2:9000;
}
server {
listen 80;
location ~ .+\.php($|/) {
root /data/www;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass phpfpm;
include fastcgi_params;
}
}
}[/code]
3、负载均衡规则的设置,即upstream参数配置
- server后可以是ip:port,也可以是域名
- 转发规则默认是轮训规则,也可以增加配置:least_conn;最少链接;ip_hash; IP Hash规则;server配置后增加weight=2参数,按权重转发
4、一台服务器多个php-fpm的配置
复制之前的php-fpm.conf成新的配置文件php-fpm.9001.conf,修改以下配置;如果nginx和php-fpm不在同一台服务器上,那么注意修改listen和listen.allowed_clients参数;之后使用php-fpm -y php-fpm.9001.conf就可以启动一个新的php-fpm了
pid = run/php-fpm.9001.pid listen = 127.0.0.1:9001 listen.allowed_clients = 127.0.0.1
5、使用建议
如果是高并发的情况下,建议使用1台nginx专门做负载均衡,web主机上每台启动多个php-fpm做请求处理。
nginx支持FastCGI, uwsgi, SCGI,memcached的负载均衡,只需将 proxy_pass改为fastcgi_pass, uwsgi_pass, scgi_pass,memcached_pass即可
参考:
还没有人抢沙发呢~