Nginx反向代理负载均衡架构图(三台服务器为例)
Nginx负载均衡(图示:192.168.1.1:80服务器配置)
192.168.1.1:80虚拟主机角色
这里192.168.1.1:80虚拟主机基于nginx进行配置,这里主要的作用是webserver,接收客户端的请求,并且根据后端服务器的情况进行请求分发,实现负载均衡
upstream模块
nginx实现负载均衡模块主要利用了upstream模块,它提供了一个简单的方法将客户端的请求反向代理到后端服务器监听的虚拟主机上,实现负载均衡
server指令
语法:server_name [parameters]
使用环境:upstream
功能:该指令用户指定后端服务器名称和参数。服务器的名称具体指nginx或apache监听的虚拟主机,可以是域名、ip地址+端口号或unix socket
参数:
weight=[number]:设置服务器的权重,权重值越高,被分配到的客户端请求越多
max_fail=[number]:在参数fail_timeout指定的时间内对后端服务器请求失败的次数。
fail_timeout=[time]:在经历参数max_fail设置失败的次数后,暂停的时间
down:标记服务器为永久离线状态
backup:仅仅在非backup服务器全部宕机或繁忙的时候才启用
upstream示例配置
upstream icontact_pool {
server 192.168.1.1:8001 weight=5 max_fails=3 fail_timeout=20s;
server 192.168.1.2:8002 weight=3 max_fails=3 fail_timeout=20s;
server 192.168.1.3:8003 weight=2 max_fails=3 fail_timeout=20s;
}
ngxin虚拟主机负载均衡配置
server {
listen 192.168.1.1:80;
server_name 192.168.1.1;
access_log /var/log/nginx/balance/loadbalance.access.log;
error_log /var/log/nginx/balance/loadbalance.error.log;
#允许列目录
location / {
root /balance/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
allow allow;
}
#proxy the php scripts to nginx_pool_upstream
location ~ \.php$ {
proxy_pass http://icontact_pool;
proxy_redirect off;
rewrite ^([^.]*[^/])$ $1/ permanent;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
nginx处理php请求
角色
192.168.1.1:8001、192.168.1.2:8002、192.168.1.3:8003虚拟主机配置基于nginx,这里作用是首先作为webserver,处理前端负载均衡nginx虚拟主机分配过来的流量,然后调用fastcgi程序,通过fastcgi调用php5-fpm处理客户端指定的php程序
参数配置
具体的参数配置可以参见我之前的一篇博客,
点击打开链接
示例配置文件
upstream fastcgi_php5_fpm {
#1.fastcgi和fpm这里通过tcp连接2.upstream池的名字不要冲突
server 127.0.0.1:9000;
}
server {
listen 192.168.1.1:8001;
server_name 192.168.1.1;
access_log /var/log/nginx/balance/one.access.log main;
error_log /var/log/nginx/balance/one.error.log;
#proxy the php scripts to php-fpm
location ~ \.php$ {
root /balance/;
#注意对SCRIPT_NAME的修改
include /etc/nginx/fastcgi_params;
fastcgi_pass haolianxi_php;
}
}
本文详细介绍了如何使用Nginx实现负载均衡,包括upstream模块的使用、虚拟主机配置以及处理PHP请求的参数配置。
510

被折叠的 条评论
为什么被折叠?



