正向代理
我们常说的代理指的就是正向代理。正向代理的过程,隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替请求,翻墙软件扮演的就是正向代理角色。eg:翻墙软件
反向代理
方向代理隐藏了真实的服务端,例如访问www.baidu.com时,背后可能有成千上万台服务器,但具体是哪一台为我们提供服务,我们并不知道。反向代理服务器会帮我们把请求转发到真实服务器那里去。nginx就是性能非常好的反向代理服务器。
负载均衡
- 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器,分离出图片服务器等,这些是简单的数据负载均衡,将压力分散到不同的机器上。将同一域名的访问分散到两台或多台机器上,是另一种负载均衡。
- nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮循、ip哈希、url哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。
nginx的upstream目前支持的四种方式的分配
- 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器。如果后端服务器down掉,能自动剔除。
- weight
指定轮询几率,weight和访问比例成正比,用于后端服务器性能不均的情况
3.ip_hash
每个请求按访问的ip的hash结果分配,这样每个固定访客固定访问同一个后端服务器,可以解决session的问题
4.url_hash(第三方)
5.fair(第三方)
反向代理+负载均衡
# 在server节点上加入以下配置
upstream www.erp.com {
server 192.168.0.101:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.0.101:8090 weight=2 max_fails=2 fail_timeout=30s;
server 192.168.0.101:8100 weight=3 max_fails=2 fail_timeout=30s;
ip_hash;
}
#修改location的配置
server {
listen 80;
server_name www.erp.com; #配置访问的域名
location / {
# root html;
# index index.html index.htm;
proxy_pass http://www.erp.com; #指向上面配置的server的节点
}
}
动静分离
动静分离,就是将jsp等动态资源和css、js、jpg等静态资源分开处理,以此提高服务器响应速度,提高性能。
location ~* \.(css|js|html)$ {
root resources;
expires 7d;
}
location ~* \.(avi|txt|png|jpg|mp3|mp4|rmvb|woff2|woff|icon)$ {
root resources;
expires 7d;
}
动静分离的正则说明
http.server.location语法
= 严格匹配,如果这个查询匹配,将提至搜索并立即处理此请求
~ 区分大小写匹配
~* 不区分大小写匹配
!~
!~*
^~