一、安装以及配置文件介绍
nginx是一款轻量级的web服务器、反向代理服务器和电子邮件(IMAP、POP3)代理服务器,是在一个BSD-like写一下发行。由俄罗斯设计师开发,特点是占用内存小,并发能力强。nginx的并发能力确实在同类型的网页服务器中表现较好,*使用nginx网站用户的有:百度、京东、网易、、腾讯等。(百度百科)
nginx.conf配置文件
host文件介绍
这里需要注意的是,一个域名只能够绑定一个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.对比
两者区别在于,代理的对象不同,正向代理代理的是客户端,反向代理代理的是服务端。实际上代理在两种代理中都是好代为收发请求 和响应,不过从结构上正好左右互换,所以把后出现的那种代理方式叫做反向代理。
参考连接:
(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反向代理,负载均衡,思想很耐人寻味。