正向代理

我们常说的代理指的就是正向代理。正向代理的过程,隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替请求,翻墙软件扮演的就是正向代理角色。eg:翻墙软件

反向代理

方向代理隐藏了真实的服务端,例如访问www.baidu.com时,背后可能有成千上万台服务器,但具体是哪一台为我们提供服务,我们并不知道。反向代理服务器会帮我们把请求转发到真实服务器那里去。nginx就是性能非常好的反向代理服务器。

负载均衡

  • 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器,分离出图片服务器等,这些是简单的数据负载均衡,将压力分散到不同的机器上。将同一域名的访问分散到两台或多台机器上,是另一种负载均衡。
  • nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮循、ip哈希、url哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。

nginx的upstream目前支持的四种方式的分配

  1. 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器。如果后端服务器down掉,能自动剔除。
  1. 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语法

= 严格匹配,如果这个查询匹配,将提至搜索并立即处理此请求
~ 区分大小写匹配
~* 不区分大小写匹配
!~
!~*
^~
02-14 04:27