Nginx动静分离、负载均衡、容错
参考
nginx集群的5种配置方式
https://blog.csdn.net/u010081710/article/details/52691406
概述
动静分离可以分摊掉静态资源对web容器的资源消耗,提升服务器的访问速度。
nginx自带健康检查,剔除掉异常的节点,以及异常节点恢复正常后,会自动加入到集群当中的功能。
动静分离
优势:
- 提高静态资源的响应速度,因为nginx的响应静态资源的性能比传统的web容器要快的多
- 降低了web容器的请求压力,因为被nginx自己处理了
- 可以降低程序包的体积,比如把固定的大图片、文档、音视频可以存放在非项目war包里面,通过动静分离访问非项目路径下面的静态资源
下面的配置Demo,把所有的静态资源的请求,直接在 root路径下面匹配
物理位置:D:/install/java/apache-tomcat-7.0.33/webapps/SFA/物理文件
代码里面的位置 http://localhost:8080/SFA/frontEndKit/res/icon-font/style.css
代理以后匹配.css成功,最终进入%root/SFA/frontEndKit/res/icon-font/style.css,也就是D:/install/java/apache-tomcat-7.0.33/webapps +/SFA/frontEndKit/res/icon-font/style.css
注意事项:
1) windows的话 路径一定是正斜杠” / “, 而不能是 反斜杠 啊
2) 静态资源的话,用 root 开头
3) 静态资源的开头要按照规则 IP:8088/RESIRYSE
server {
listen 8088;
server_name recordZs;
location ~ \.(gif|jpg|jpeg|png|bmp|swf)$ {
root C:/Users/502764158/Desktop/test;
}
# 所有以/dh-edu/resources/images 开头的 请求都会复制到/dh/dh-edu/resources/images 路径下去寻找资源
location ~ ^(/dh-edu/resources/images|/dh-edu/resources/video|/dh-edu/resources/pdf) {
root /dh;
}
location ~ \.(jsp|do)$ {
proxy_pass http://localhost:8082;
}
# 其它项目的静态资源都在
location ~* \.(gif|jpg|JPG|jpeg|png|css|js|ico|htm|html|swf)$ {
root apache-tomcat-9/front_end/eapp/resources;
}
}
~ 表示匹配正则表达式 \开始匹配 $表示结束匹配
注意正则表达式匹配的话 proxy_pass中不能包含 URL 元素,也就是 只有 http:***:8080 后面不能有元素
# 所有静态请求都由nginx处理,存放目录为html
location ~ \.(gif|jpg|jpeg|png|bmp|swf)$ {
root html;
}
# 所有动态请求都转发给tomcat处理
location ~ \.(jsp|do)$ {
proxy_pass http://local_tomcat;
}
# 匹配所有以recordZs 打头的请求
location ~ ^recordZs*$ {
proxy_pass http://localhost:8082;
}
负载均衡和容灾
默认nginx是具备检测集群节点健康状况的功能,会在一个连接超时后,标记该节点暂时不可用,并且自动使用集群中其它节点来响应
设备的状态有:
- down 表示单前的server暂时不参与负载
- weight 权重,默认为1。 weight越大,负载的权重就越大。
- backup 备用服务器, 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
容灾的参数:一般配置容灾的时候,配置proxy_connect_timeout、fail_timeout即可
-
fail_timeout默认为10s
-
max_fails默认为1。就是说,只要某个server失效一次,则在接下来的10s内,就不会分发请求到该server上
-
proxy_connect_timeout 后端服务器连接的超时时间_发起握手等候响应超时时间
-
proxy_read_timeout 连接成功后等候后端服务器响应时间其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
-
proxy_send_timeout 后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
-
backup参数,
-
proxy_pass http://my_tomcat; 即可
-
可以设置weight,值越大,访问的概率越高
upstream netitcast.com { #服务器集群名字
server 127.0.0.1:8080;
server 127.0.0.1:38083;
server 127.0.0.1:8083 backup;
}
server {
listen 88;
server_name localhost;
location / {
proxy_pass http://netitcast.com;
proxy_connect_timeout 1;
}
}