【nginx】反向代理和负载均衡

一、安装以及配置文件介绍


   nginx是一款轻量级的web服务器、反向代理服务器和电子邮件(IMAP、POP3)代理服务器,是在一个BSD-like写一下发行。由俄罗斯设计师开发,特点是占用内存小,并发能力强。nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户的有:百度、京东、网易、、腾讯等。(百度百科

nginx.conf配置文件

host文件介绍

host文件的作用和介绍

 nginx虚拟主机的配置

这里需要注意的是,一个域名只能够绑定一个IP地址。一个IP地址可以被多个域名访问。


二、使用nginx来区分虚拟主机


有两种方式,第一种是通过端口来区分虚拟机


1.端口配置


在nginx.conf文件中添加一个Service节点,修改端口号就可以。

#通过端口来区分续集主机
 server {
        listen       81;
        server_name  192.168.65.129;
        location / {
            root   html81;
            index  index.html index.htm;
        }
    }

2.通过域名来区分虚拟主机


可以通过修改host文件指定域名的ip地址。
Host文件的位置:C:\Windows\System32\drivers\etc

在window下的HOST文件中添加如下配置




在nginx.conf文件中,添加server测试。

#测试域名访问虚拟主机
 server {
        listen       80;
        server_name  test.taotao.com;
        location / {
            root   html81;
            index  index.html index.htm;
        }
    }


三、反向代理


1.正向代理


   A同学需要创业,然后想向马云通知借款投资,但是吃了闭门羹。后来经过找关系,知道自己的大学王老师是马云的同学,所以A同学就拖王老师从马云哪里借钱,成功借到了,然后将钱交给了A同学。这里的王老师就扮演了关键的角色,代理,也就是正向代理。王老师替A同学办这件事情的过程中,真正借钱的人是谁,马云是不知道的。这一点非常关键。又比如饭店中,厨师是不知道谁在点菜的,其中的送餐员就扮演了代理的角色。

我们常说的代理是正向代理,正向代理的过程,它隐藏了真实的客户端,服务端不知道真实的客户端是谁,客户端的请求时由代理服务器来完成的。


2.反向代理


   我们有问题经常拨打10086客服,但是我们不需要关心,为我们服务的是谁?是男的,女的,帅气的还是漂亮的,我们关心的只是问题能够能否得到专业的解答。我们只需要拨通10086的总机号码,电话那一头总有人回答你。那么这里的10086总机号码就是我们说的反向代理。客户不知道真正提供服务的人是谁。

  反向代理隐藏了真实的服务端,当我们请求www.baidu.com的时候,就像拨打10086一样,背后可能有成千上万的服务器为我们提供服务。但是具体哪一台,你不需要知道,你只需要知道代理服务器是谁就可以了。这里,www.baidu.com就是我们的反向代理服务器,反向代理服务器会把我们的请求转发到真是的服务器那里去。Nginx就是非常好的反向代理服务器,用来做负载均衡。



我们访问的baidu.com,然后从这个服务器拿到资源,其实可能这些资源并不是从这个服务器里面拿出来的,而是这个服务器作为反向代理,从别的服务器上拿过来的。

我们可能是这样访问 百度的。

但是我们实际访问过程中,是这样运行的。



3.对比


   两者区别在于,代理的对象不同,正向代理代理的是客户端,反向代理代理的是服务端。实际上代理在两种代理中都是好代为收发请求 和响应,不过从结构上正好左右互换,所以把后出现的那种代理方式叫做反向代理。

参考连接:

反向代理何为反向代理


4.反向代理场---nginx反向代理tomcat服务


(1) windos host文件中添加域名




(2)nginx中配置两个tomcat服务器

			#第三个服务器,反向代理tomcat
			 upstream tomcats{
			    server 192.168.65.129:8080
			    server 192.168.65.129:8081
			}
			server {
			      #监听端口
			        listen       81;
			    #域名可以有多个,用空格隔开
			        server_name  tomcat.taotao.com;
			
			        #charset koi8-r;
			
			        #access_log  logs/host.access.log  main;
			        #root location
			     
			        location / {
			            proxy_pass   http://tomcats;  //http是需要带的,不然是不生效的。
			            index  index.html index.htm;
			        }
			    }
upstream:

实现反向代理的功能,将真正的请求转发到后端服务器上,并且从后端服务器读取响应,发回到客户端。upstream是一种特殊的handler,只不过响应的内容不是自己产生的,而是从后端服务器读取的。


(3)重新启动Nginx


(4)直接访问tomcat.taotao.com
     然后就可以直接访问到tomcat界面


(5)工作流程

请求的是nginx,但是实际上执行任务是的tomcat,其实tomcat所进行的是请求的转发,转发给tomcat服务。采取的策略,是轮询。轮流为你提供服务。


四、负载均衡


常用的算法是轮询算法和weight算法。


1.轮询算法

  按照客户端的请求顺序,把客户端的请求逐一分配到不同端口的服务器,如果后端服务器宕机,宕机服务器会自动的被踢出,使用户的访问不受到影响。请求会分配给正常的服务器。轮询算法是nginx默认的算法,使用简单不需要额外的配置。


2.weight算法

weight算法是在轮询的基础上加上权重,权重轮询和访问成正比,权重越大,转发的请求就会越多。使用过程中,只需要在upstream后面添加一个weight即可代表权重。如下图:

weiht=2代表2/3的概率,访问第一个server,1/3的概率访问第二个server。




3.ip_hash

每个请求按照访问ip的hash结果分配,这个每个访客固定一个后端服务器,可以解决session的问题。


4.fair(第三方)

按照后端服务器的相应时间来分配请求,相应时间短的优先分配。


小结


nginx反向代理,负载均衡,思想很耐人寻味。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值