正向代理:nginx
客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就是正向代理。正向代理的特色:就是咱们明确知道要访问哪一个网站地址。算法
反向代理:后端
客户端想获取服务器集群中(服务1,服务2,服务3 他们的资源相同)中的资源,可是客户端没法与该服务器集群创建链接,但咱们能够与另外一台服务器(代理服务器)创建链接且该服务器能获取服务器集群中的资源。这个时候客户端就能够经过请求代理服务器,获取想要的资源,但客户端并不知道给他资源的是哪一个服务器。这种方式就是反向代理。浏览器
当一台服务器的单位时间内的访问量越大的时候,服务器的压力会越大。当一台服务器压力大得超过自身的承受能力的时候,服务器会崩溃。为了不服务器崩溃,让用户有更好地体验,咱们一般经过负载均衡的方式来分担服务器的压力。那么什么是负载均衡呢?咱们经过创建不少个服务器,把这些服务器组成一个服务器集群,而后,当用户访问咱们网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,而后将该访问请求引入该选择的服务器。这样,用户的每次访问,都会保证服务器集群中的每一个服务器的压力趋于平衡,分担了服务器压力,避免了服务器崩溃的状况。负载均衡就是采用反向代理的思想。服务器
Nginx是一款能够经过反向代理实现负载均衡的服务器,使用Nginx服务实现负载均衡的时候,用户的访问首先会访问到Nginx服务器,而后Nginx服务器再从服务器集群表中选择压力较小的服务器,而后将该访问请求引向该服务器。若服务器集群中的某个服务器崩溃,那么从待选服务器列表中将该服务器删除,也就是说一个服务器假如崩溃了,那么Nginx就确定不会将访问请求引入该服务器了。并发
一、建立fzjh.conf配置文件负载均衡
在/usr/local/nginx/conf下建立fzjh.conf文件,文件内容以下:高并发
user nobody; worker_processes 2; events { worker_connections 1024; } http{ #=upstream设置负载均衡的待选服务器列表,在运行中若是有服务器崩溃那该服务器就会在该列表中移除 upstream mypro{ server 219.133.55.36;#中国万维网 server 115.239.210.27;#百度的ip } server{ listen 8080; #====== 对ngnix更目录作负载均衡=== location / { #==选择要代理的服务器要与upstream对应========== proxy_pass http://mypro; } } }
二、加载fzjh.conf配置文件测试
执行命令: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf网站
三、测试是否成功
在这里咱们的负载均衡待选服务器列表是百度和中国万维网,也就说咱们访问个人主机名+8080 就能够进行测试,若是页面在百度与中国万维网中切换,就表示成功。
个人主机是个人阿里元服务器你们能够试试:http://www.jalja.org:8080
Upstream模块:该模块是Nginx服务器的一个重要模块。Upstream模块实如今轮询和客户端ip之间实现后端的负载均衡。经常使用的指令有ip_hash指令、server指令和upstream指令等。该模块主要进行轮询算法。upstream指令主要是用于设置一组能够在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询。
ip_hash指令:在负载均衡系统中,假如用户在某台服务器上登陆,那么若是该用户第二次请求的时候,由于咱们是负载均衡系统,每次请求都会从新定位到服务器集群中的一个服务器,那么此时若是将已经登陆服务器A的用户再定位到其余服务器,显然不妥。故而,咱们能够采用ip_hash指令解决这个问题,若是客户端请求已经访问了服务器A并登陆,那么第二次请求的时候,会将该请求经过哈希算法自动定位到该后端服务器中。简单说ip_hash指令能够实现当用户使用同一浏览器在A服务器登陆后,那他后续的全部请求都在同一服务器中进行,Nginx代理服务器不会将他的请求分配到其余服务器上,以此规避用户登陆信息在不一样服务器间流转的问题,从而保证用户只需登陆一次。
ip_hash的使用:在fzjh.conf配置文件中开启该功能
server指令: 主要用于指定服务器的名称和参数。
使用:在fzjh.conf配置文件中开启该功能
注意:在实际开发中weight不要与ip_hash同时使用
负载均衡不一样实现方式的优缺点:假如使用硬件的方式实现负载均衡,那么中间的转发机构就是硬件,这个时候运行的效率很是高,可是对应的成本也很是高。若是咱们采用软件的方式来实现负载均衡,那么中间的转发机构就是软件,这个时候,运行效率不如硬件,可是成本相对来讲低得多。而使用Nginx服务器实现负载均衡,那么就是经过软件的方式来实现负载均衡,而且Nginx自己支持高并发等。故而使用Nginx服务器实现负载均衡,能大大节约企业的成本,而且因为Nginx是服务器软件,其执行效率也是很是高。