1 负载均衡
---------网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务、分离出图片作为单独服务。这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时候来自web前端的压力,也是很大的。怎样讲同一个域名的访问分散到两台或者更多的机器上。这其实就是另一种负载均衡了,Nginx自身就可以做到,只需要做个简单的配置就行。
Nginx可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希,权重等多种方式怼后端服务器做负载均衡,同时还支持后端服务器的健康检查。
1.1 负载均衡策略
- 轮询(默认)
-----每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 - weight(加权轮询)
-----指定轮询几率,weight和访问率成正比,用于后端服务器性能不均的情况 - Ip_Hash
-----每个请求按照访问的ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决Session问题
1.2 反向代理和负载均衡配置
#在server节点上加入以下配置
upstream www.erp.com {
# 加权
server 192.169.15.131:8080 weight=5;
server 192.168.15.131:8090;
server 192.168.15.131:8100;
}
#修改location的配置
server {
listen 80;
server_name www.erp.com;#配置访问的域名
location / {
# root html;
# index index.html index.htm;
proxy_pass http://www.erp.com; #指向上面配置的server的节点
}
}
2 动静分离
----动静分离,就是将css、js、jpg等静态资源和jsp等动态资源分开处理,以此提高服务器响应速度,提高性能。
2.1 动静分离的配置原则
http.server.localtion语法
基本语法: location [=|~|~*|^~]/uri/{...}
= 严格匹配, 如果这个查询匹配,将停止搜索并立即处理此请求
~ 区分大小写匹配(可用正则表达式)
~* 不区分大小写匹配(可用正则表达式)
!~ 区分大小写匹配
!~* 不区分大小写匹配
^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx如果路径匹配那么不测试正则表达式
location = /{
#只匹配/查询
}
location /{
#匹配任何查询,因为所有请求都以/开头。但是正则表达式和长的块规则将被优先查询匹配
}
location ^~ /images/{
#匹配任何以/images/开头的查询并停止搜索。任何正则表达式将不会被测试。
}
location ~*.(gif|jpg|jpeg)${
#匹配任何以gif|jpg|jpeg结尾的请求
}