正向代理是一个位于客户端【用户A】和原始服务器【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。即代理服务器替代访问方【用户A】去访问目标服务器【服务器B】。客户端必须要进行一些特别的设置才能使用正向代理。当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
用单机tomcat搭建的网站,在比较理想的状态下能够承受的并发访问量在150到200左右。按照并发访问量占总用户数量的5%到10%这样计算,单点tomcat网站的用户人数在1500到4000左右。对于一个为全国范围提供服务的网站显然是不够用的,为了解决这个问题引入了负载均衡方法。负载均衡就是一个web服务器解决不了的问题可以通过多个web服务器来平均分担压力来解决,并发过来的请求被平均分配到多个后台web服务器来处理,这样压力就被分解开来。
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
2. 安装及启动nginx
如果启动不成功,说明80端口被占用,可通过 netstat -ano|findstr ":80" 查看
可通过修改 nginx-1.12.2\conf\nginx.conf 里的默认的端口配置来启动
nginx.conf 中节点作用:
-
worker_processes:工作进程个数,可配置多个
-
worker_connections:单个进程最大连接数
-
server:每一个server相当于一个代理服务器
-
lister:监听端口,默认80
-
server_name:当前服务的域名,可以有多个,用空格分隔(我们是本地所以是localhost)
-
location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
-
index:当没有指定主页时,默认会选择这个指定的文件,可多个,空格分隔
-
proxy_pass:请求转向自定义的服务器列表
-
upstream name{ }:服务器集群名称
nginx的三个常用命令:
启动nginx: start nginx 关闭nginx: nginx -s stop 重新加载配置文件: nginx -s reload //可以在不关闭nginx的情况下更新配置文件.
使用两个tomcat服务器演示(已配置好且都能正常使用),由于两个tomcat版本不一样,可以直接展现,这里就先不添加项目了
配置 nginx-1.12.2\conf\nginx.conf
访问同一网址 http://localhost:80 可发现页面在两个tomcat中来回切换
也可设置权重
注意,每次修改完配置需要重启一下nginx。
4. 超时策略如果集群中的某个服务器挂了,此时nginx分发请求到该服务器时,如果没有配置超时策略,会出现一段至少1分钟的等待,超过了客户端的响应时间,会造成客户端超时情况,使Nginx报499。
主要介绍如下几个参数:
- proxy_connect_timeout:与服务器连接的超时时间,默认60s
- proxy_timeout:nginx接收后端服务器的响应超时时间,默认值为10min,尽量取默认值
- fail_timeout:当该时间内服务器没响应,则认为服务器失效,默认10s
- max_fails:允许连接失败次数,默认为1
在nginx.conf中的配置:
设置客户端响应时间=proxy_connect_timeout + fail_timeout*max_fails,如我的客户端响应时间设置为3秒,那么超时策略配置如下