1.反向代理
proxy_pass http://baidu.com;
location / {
proxy_pass http://atcui.com/;
}
代理服务器的概念:
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
正向代理:
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。代理对象是客户端,不知道服务端是谁。
反向代理:
客户端不需要任何配置就能访问,只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器,获取数据后再返回给客户端。对外就一个服务器,暴露的是反向代理服务器地址,隐藏了真实服务器IP地址。代理对象是服务端,不知道客户端是谁。
更详细的正向代理和反向代理的区别:
反向代理是什么意思?正向代理和反向代理的区别是什么?_风柏杨的博客-CSDN博客_反向代理
2.负载均衡
轮询
默认情况下使用轮询方式,逐一转发,这种方式适用于无状态请求。
weight(权重)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream httpd {
server 127.0.0.1:8050 weight=10 down;
server 127.0.0.1:8060 weight=1;
server 127.0.0.1:8060 weight=1 backup;
}
down:表示当前的server暂时不参与负载
weight:默认为1.weight越大,负载的权重就越大。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
ip_hash:当服务器过多,客户端不是在所有的服务器上都会存在session,这时通过Nginx对客户端IP进行hash计算将客session固定到某个服务器上,这样客户端就只会给固定的服务器发送请求,可以解决session共享的问题,但是如果服务器宕机则会无法访问,解决session共享问题最好使用Reids。
客户端发送多个请求到服务器,服务器处理请求,有些可能要访问数据库,服务器处理完毕后再将结果返回客户端。
这种架构模式单一,适合并发请求少的情况,但并发量大的时候如何解决?
首先可能想到升级服务器配置,但硬件的性能提升不能满足日益增长的需求,此时想到服务器集群,增加服务器数量,然后将原先请求单个服务器的情况改为将请求分发到多个服务器上,将负载分发到多个服务器上,也就是负载均衡。
3.动静分离
为了加快网站的解析速度,可以把动态页面和静态页面有不同的服务器来解析,减少服务器压力,加快解析速度。
Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景。
动态资源:如 jsp,由 tomcat 或其他 web 服务器完成
静态资源:如图片、css、js等,由 nginx 服务器完成
它们各司其职,专注于做自己擅长的事情。
动静分离充分利用了它们各自的优势,从而达到更高效合理的架构。