
四层负载均衡数据包是在底层就进行了分发,而七层负载均衡数据包则在最顶端进行分发,所以四层负载均衡的效率比七层负载均衡的要高。四层负载均衡不识别域名,而七层负载均衡识别域名。
注意stream模块的位置,要在http模块上方,同时proxy_pass的书写方式也有不同。

Nginx提供负载均衡的模块是:
ngx_http_proxy_module proxy代理模块,用于把请求抛给后端的服务器节点,或是upstream服务器池 ngx_http_upstream_module 负载均衡模块,实现服务器的负载均衡节点配置,以及健康检查
http {
upstream [你的负载均衡机制名称,随便设置一个就好] {
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen [nginx监听端口];
server_name [head中的host对应的值]
location / {
proxy_pass http:// [你的负载均衡机制名称,对应上面upstream的值];
}
}
}
每个请求按照请求时间顺序分配到不同的后端服务器,如果后端服务器挂了,则自动剔除
指定轮询的频率,weight和访问率成正比,用于后端服务器性能不均匀的情况
http {
upstream ipHashLoadBalanceServer {
ip_hash;
server www.address1.com weight=3;// 或者ip+端口 , 不需要加入http/https前缀
server www.address2.com; // default weight=1
server www.address3.com;
}
server {
listen 80;
location / {
proxy_pass http://loadBalanceServer;
}
}
}
客户端ip地址被用作hash key来判断客户端请求应该发送到哪个服务器,这种方法保证了来自相同客户端的请求总是发送到相同服务器(如果服务器可用的话
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
nginx会尽量不让负载繁忙的应用服务器上负载过多的请求,相反的,会把新的请求发送到比较不繁忙的服务器。
upstream myapp1 {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
假如有一台主机是出了故障,或者下线了,要暂时移出,那可以把它标为down,表示请求是会略过这台主机的。
upstream downServer {
server www.address1.com; // 或者ip+端口 , 不需要加入http/https前缀
server www.address2.com down;
}
backup是指备份的机器,相对于备份的机器来说,其他的机器就相当于主要服务器,只要当主要服务器不可用的时候,才会用到备用服务器。
upstream backupServer {
server www.address1.com; // 或者ip+端口 , 不需要加入http/https前缀
server www.address2.com backup;
}
默认情况下,max_fails的值为1,表示的是请求失败的次数,请求1次失败就换到下台主机。另外还有一个参数是fail_timeout,表示的是请求失败的超时时间,在设定的时间内没有成功,那作为失败处理。
upstream backupServer {
server www.address1.com max_fails=2; // 或者ip+端口 , 不需要加入http/https前缀
server www.address2.com backup;
}
| 参数 | 作用解释 |
| proxy_set_header | 设置反向代理向后端发送的http请求头信息,如添加host主机头部字段,让后端服务器能够获取到真实客户端的IP信息等 |
| client_body_buffer_size | 指定客户端请求主体缓冲区大小 |
| proxy_connect_timeout | 反向代理和后端节点连接的超时时间,也是建立握手后等待响应的时间 |
| proxy_send_timeout | 表示代理后端服务器的数据回传时间,在规定时间内后端若数据未传完,nginx会断开连接 |
| proxy_read_timeout | 设置Nginx从代理服务器获取数据的超时时间 |
| proxy_buffer | 设置缓冲区的数量大小 |
Nginx rewrire技术主要是实现URL地址重写,且支持正则表达式的规则。
语法
rewrite ^/(.*) http://192.168.178.134/ permanent; rewrite是指令,开启一个跳转规则 ^/(.*) 表示匹配所有,匹配成功后跳转到后面的url地址 表示取出前面正则括号里的内容 permanent表示 301 重定向的标记
| 标记 | 解释a |
| last | 规则匹配完成后,继续向下匹配新的Locaiton |
| break | 本条规则完成匹配后,立即停止 |
| redirect | 返回302临时重定向,浏览器地址栏显示跳转后的URL |
| permanent | 返回301永久重定向,浏览器地址显示跳转后的URL |
last和break用于实现URL重写,浏览器地址栏不发生变化
redirect和permanent用于实现URL跳转,浏览器地址栏跳转新的URL

网站维护期间,仅指定ip可以访问,其他ip跳转维护页面

server {
listen 80;
server_name yzb.lsp.com;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl;
server_name yzb.lsp.com;
include /opt/env/nginx/servs/ssl.settings;
location / {
root /opt/apps/front-yzb;
index serve.html index.html index.htm;
}
include /opt/env/nginx/servs/yzb.locations;
}