Nginx四层代理配置负载均衡和动静分离
Posted ww独ww
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx四层代理配置负载均衡和动静分离相关的知识,希望对你有一定的参考价值。
nginx四层代理配置负载均衡和动静分离
Nginx负载均衡模式
rr负载均衡模式
每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。
least_conn最少连接
优先将客户端请求调度到当前连接最少的服务器。
ip hash负载均衡模式:
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session 共享问题可用后端服务的 session 共享代替 nginx的ip_hash。
fair(第三方)负载均衡模式
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
url hash(第三方)负教均衡模式
基于用户请求的uri做hash。和ip hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。
nginx反向代理分为2种
基于7层的HTTP代理和MAIL代理,用于动静分离的场景,或者根据7层访问URL路径转发
基于4层的TCP或者UDP代理IP+端口,用于nginx作为前端负载均衡器时使用,仅用于转发访问请求给后端的web集群
基于7层的HTTP代理和MAIL代理,用于动静分离的场景,或者根据7层访问URL路径转发
upstream 服务器组名
server SERVER1IP:PORT;
server SERVER2IP:PORT;
......
location .*\\.jsp$
proxy_pass http://服务器组名;
fastcgi_pass phpSERVERIP:9000
-----------------------------
基于4层的TCP或者UDP代理 IP+端口,用于nginx作为前端负载均衡器时使用,仅用于转发访问请求给后端的web集群。
和http块同级别,一般配置在http块上面配置stream模块,安装时必须先开启stream模块--with-stream
stream
upstream 服务器组名
server SERVER1IP:PORT;
server SERVER2IP:PORT;
......
server
listen [IP:]PORT
proxy_pass 服务器组名;
部署
环境配置
主机 | 操作系统 | IP地址 | 主要软件 |
---|---|---|---|
Nginx服务器1(四层协议) | CentOS 7.3 x86_64 | 192.168.19.10 | nginx-1.12.0.tar.gz |
Nginx服务器2(七层协议) | CentOS 7.3 x86_64 | 192.168.19.11 | nginx-1.12.0.tar.gz |
Nginx服务器3(七层协议) | CentOS 7.3 x86_64 | 192.168.19.18 | nginx-1.12.0.tar.gz |
Tomcat服务器1 | CentOS 7.3 x86_64 | 192.168.19.17 | apache-tomcat-7.0.54.tar.gz |
Tomcat服务器2 | CentOS 7.3 x86_64 | 192.168.19.19 | apache-tomcat-7.0.54.tar.gz |
Nginx四层代理配置步骤
1.配置好两台Nginx七层代理服务器
2.在四层代理的Nginx服务器上做相关配置
./configure --with-stream
vim /usr/local/nginx/conf/nginx.conf
和http同等级:所以一般只在http上面一段设置,
stream
upstream appserver
server 192.168.19.11:80 weight=1;
server 192.168.19.18:80 weight=1;
server
listen 8888;
proxy_pass appserver;
http
......
systemctl restart nginx #重启服务
3.测试结果
测试静态页面效果
浏览器访问 http://192.168.19.10:8888
浏览器访问 http://192.168.19.10:8888/error.jpg
Nginx四层代理访问动态页面
浏览器访问:http://192.168.19.10:8888/test/index.jsp
总结
Nginx的动静分离
location匹配用户访问的URL路径,根据正则表达式来判断用户访问请求的是静态页面还是动态页面
html,css,javascript,jpg,png…… 静态页面由nginx来处理
jsp,php…… 动态页面由后端应用服务来处理,动态配置在http块里配置。
以上是关于Nginx四层代理配置负载均衡和动静分离的主要内容,如果未能解决你的问题,请参考以下文章
Web服务------Nginx四层代理+Tomcat负载均衡,动静分离
Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分