当前位置: 首页 > 科技观察

Nginx代理与反向代理、负载均衡实践

时间:2023-03-14 17:40:47 科技观察

Nginx代理与反向代理与负载均衡的实践将更新后的动态页面输出结果转化为静态网页,形成缓存,从而提高网站的响应速度。Proxy和反向代理Proxy(正向代理,目标服务器不知道谁在访问)位于客户端和目标服务器之间,起着中转的作用。实际上是客户端想访问目标服务器,但由于某种原因不能直接访问,于是将请求和目标服务器发送给代理服务器,代理服务器再请求目标服务器,并将返回的响应结果返回给客户端。反向代理(用户实际上并不知道最终的服务器,只是访问了一个反向代理服务器)。客户端会将反向代理服务器视为目标服务器。反向代理服务器向反向代理服务器发送请求后,反向代理服务器将请求内部后端服务器返回得到的响应结果给客户端。特点:安全。反向代理具有安全性。可以隐藏真正的内部服务器。特征。正向代理的主要目的是为防火墙内的局域网用户提供一种访问外部网络的途径。反向代理的主要目的是提供防火墙内的服务器给外部用户访问,同时也可以为多个后端服务器提供负载均衡和缓存功能。反向代理服务是在Nginx配置文件的location块中配置的,也就是proxy_pass指令。server{listen80;server_nametest.test;#将本机收到的所有test.test请求转发给另一台服务器192.168.78.128location/{proxy_passhttp://192.168.78.128;#以下为其他辅助说明proxy_set_headerHost$host;#Change来自客户端的请求头信息proxy_set_headerX-Real_IP$remote_addr;#用户真实访问ipproxy_connect_timeout2;#配置nginx与后端服务器建立连接的超时时间proxy_read_timeout2;#配置nginx发送读取请求的超时时间backendproxy_send_timeout2;#配置nginx向后端服务器发送写请求等待响应超时proxy_redirecthttp://www.baidu.com;#用于修改后端服务器返回的响应头中的Location和Refresh}}负载均衡负载均衡(loadbalance):就是将负载分配给多个运行单元执行,从而提高服务的可用性和响应速度.1、没有负载均衡的web架构如下图:用户直接连接服务器。如果此时服务器宕机,整个网站就会宕机。2、带负载均衡的web架构用户不直接访问后端服务器,而是访问负载均衡服务器,负载均衡服务器再转发给后端服务器。如果此时有一台后端服务器挂掉,负载均衡服务器会将其移除,并将后续所有请求转发给好的那台,这样就不会影响网站的正常运行。这时候我们还需要考虑负载均衡服务器会不会挂掉,所以引入第二台负载均衡服务器来缓解。负载均衡的配置可以通过在负载均衡服务器的Nginx中配置upstream命令来实现。不同负载均衡配置的特点如下图所示:一般轮询配置server{listen80;server_nametest.test;location/{proxy_passhttp://web_server;#reverseproxy}}#configureloadbalancingservergroupupstreamweb_server{server192.168.78.128;server192.168.78.129;}加权轮询配置#配置负载均衡服务器组upstreamweb_server{server192.168.78.128weight=1;server192.168.78.129weight=3;}这里的权重之和为一个循环,这里4次是一个循环,所以每4次请求中,3次会分配给服务器129,1次会分配给128,但是具体的3次不会依次执行,而是按照分布式的方式执行到算法。我们还可以在负载均衡计划中设置每个Web服务器的状态。upstreamweb_server{server192.168.78.128weight=1max_fails=1fail_timeout=2;#允许请求失败的次数,请求max_fail次失败后,暂停服务的时间server192.168.78.200backup;#保留备份服务器server192.168.78.33down;#当前服务器不参与负载均衡}ip_hash配置upstreamweb_server{ip_hash;}使用ip_hash时,不能使用weight和backup。第三方模块(fair)安装fair模块的步骤略过...配置fair负载均衡server{listen80;server_nametest.test;location/{proxy_passhttp://web_server}}upstreamweb_server{server192.168.78.128;server192.168.78.132;公平;#使用公平}