http_proxy_module 模块
'http_proxy_module'模块可以将请求转发到另一台服务器,隐藏服务器真实IP
server {
listen 80;
server_name www.endvv.com;
location / {
proxy_pass http://127.0.0.1:1000;
}
}
upsteam web{
server 127.0.0.1:1000;
}
server {
listen 80;
server_name www.endvv.com;
}
location / {
proxy_pass http://web;
}
模块参数
proxy_set_header Host $host; #设置由后端的服务器获取用户的主机名或者真实的IP地址,以及代理者的真实IP地址
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 600; #Nnginx跟后端服务器连接超时时间
proxy_send_timeout 600; #后端服务器数据回传时间,必须在时间内传输完所有数据,否则断开链接
roxy_read_timeout 600; #连接成功后,后端服务器响应时间
proxy_buffers 16 4k; #设置缓冲区的数量和大小,nginx从代理的后端服务器获取的响应信息、会放置到缓冲区
proxy_buffer_size 8k; #设置缓冲区大小,默认该缓冲区大小等于指令proxy_buffers设置的大小
proxy_busy_buffers_size 64k; #用于设置系统很忙的时候可以使用proxy_buffers的大小
proxy_temp_file_write_size 64k; #指定proxy缓存临时文件的大小
http_upstream_module模块
模块参数
server 172.16.0.2 #定义后端WEB服务器
weight=1 #默认为1,weight 值越大,分配到访问的概率越高
max_fails=1 #允许请求失败的次数为1
fali_timeout=10s #max_fails请求失败后,下次检查的间隔时间
backup #备用服务器,如果主服务器全部宕机了,就会请求备用服务器
down #表示当前服务器暂时不参与负载均衡
模块调度算法
--调度算法分为两类
第一类为静态调度算法,即负载均衡器根据自身设定的规则进行分配,不需要考虑后端节点服务器的情。例如'rr、wrr、ip_hash'等都属于静态调度算法
第二类为动态调度算法,即负载均衡器会根据后端节点的当前状态来决定是否分发请求,例如:连接数少的有限获得请求,响应时间短的优先获得请求。例如'least_conn、fair'等都属于动态调度算法
调度算法
rr
轮循
#默认配置就是轮询策略
upstream web {
server 172.16.0.2;
server 172.16.0.3;
}
wrr (weight权重)
--weight 值越大,分配到访问的概率越高,主要用于后端每个服务器性能不均的情况,服务器性能强大的权重设置得高一些可以分到更多的任务,减轻性能较弱机器的运行压力
upstream web {
server 172.16.0.2 wegith=1;
server 172.16.0.3 wegith=2;
}
ip_hash
--根据'hash'算法对每个请求中的访问 IP 进行处理,使来自同一个IP的访客固定访问一个后端服务器,这种方式可以简单而有效地解决动态网页存在的会话'session'共享问题
upstream web {
ip_hash;
server 172.16.0.2 wegith=1;
server 172.16.0.3 wegith=2;
}
fair
--'fair'算法可以根据页面大小和加载时间的长短智能地进行负载均衡,就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配,如果需要使用这种调度算法,需要安装'upstream_fair'模块
upstream web {
fair;
server 172.16.0.2 wegith=1;
server 172.16.0.3 wegith=2;
}
least_conn
--'least_conn'算法会根据后端服务器连接数来分配请求,优先请求连接数最少的
upstream web {
least_conn;
server 172.16.0.2 wegith=1;
server 172.16.0.3 wegith=2;
}
url_hash
--'url_hash'算法按访问'URL'的'hash'结果来分配请求,使每个URL定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率命中率
upstream web {
hash $request_uri consistent;
server 172.16.0.2 wegith=1;
server 172.16.0.3 wegith=2;
}