一、常用的Web服务器介绍
服务器介绍
Web服务器分为静态服务器和动态服务器,静态服务器就是处理静态资源的,比如html,CSS,js,常用的有Apache、Nginx;动态服务器就是处理动态请求的,比如jsp,servlet等,常用的有Tomcat,Weblogic。
Nginx是一个高性能的Http服务器和反向代理服务器,能够支持5万个并发连接,内存,CPU消耗非常低,是基于七层协议的服务。
反向代理介绍
我们平时说的代理指的是代理客户端,这个是正向代理,反向代理指的是代理服务端。
我们作为用户想访问一个服务资源URL,如果我们的浏览器直接打不开这个URL,一般会通过vpn或者其他代理服务器中转,这种情况下的代理就是正向代理,也就是我们通常说的代理的意思。
而反向代理是指,作为服务资源提供方,内部有很多服务器,这些服务器不能全部暴露给第三方用户,因此需要在内部服务器的前面加一个代理服务器,用户访问的是代理服务的IP,而不知道具体访问的是服务端的哪台机器,这种情况就是反向代理,指的是代理服务端。
二、Nginx在分布式架构中的作用
分布式架构的演进
一个网站的初期,访问的流量比较小,选用的架构可能就是用户通过域名访问,经过域名解析(DNS服务器),拿到后端服务器的IP地址,直接访问到这个IP所对应的Tomcat服务器,这是最简单的一个网站架构。
随着用户流量的增大,一台Tomcat服务器无法满足用户的请求,因此人们会想到2个办法:
升级这台服务器更换更强大的硬件,这就是垂直扩展;
增加新的服务器来分担前端流量,这就是水平扩展;
垂直扩展的方式就是对一台服务器不断加强硬件,但是服务器的可扩展内存会有上限,总会达到瓶颈,而且成本比较高,因此人们一般会选择水平扩展。一台不够再加一台,不行再加一台......
为了应对流量的增加,不断的增加后端服务器的数量,那么服务器的IP会越来越多,通过DNS服务器管理这些服务器IP带来了新的问题:
1、后端的某台机器宕机后,DNS服务器不知道该机器宕机,仍然解析到了这个IP,如果用户访问到了这个宕机的IP,那么系统无法为用户提供服务。
2、DNS服务器配置新的IP后,它不会立即生效,那么在它生效的这个时间段,新加的服务器不会为用户提供服务。
反向代理和负载均衡服务器可以很好地解决上面的问题。
用了反向代理服务器后,网站的架构就进一步演进,变成了用户通过域名访问,DNS服务器返回反向代理服务器的IP,反向代理服务器根据被代理服务器的IP配置和负载均衡的策略转发用户的请求到不同的后端服务器,后端服务器返回响应结果到反向代理服务器,反向代理服务器返回结果给用户。
反向代理服务器因为只转发用户的请求而不做具体处理,因此它的性能比应用服务器强大。
随着流量的继续增大,单台反向代理服务器成为了瓶颈,我们就会对其做集群,解决高性能的问题,对其做主备解决高可用的问题。
至此,一个网站的分布式架构的演进过程介绍完了。
Nginx在分布式架构的作用
通过上面的架构演进介绍,我们知道分布式架构中最重要的思路就是水平扩展,水平扩展最重要的一个环节就是反向代理和负载均衡。
Nginx就是一个高性能的反向代理和负载均衡服务器,它可以支持5万的并发访问,同时它可以做动静分离,可以解决跨域访问和防盗链的问题。
三、Nginx的下载与安装
要了解一个软件或者学习一个技术,第一步就是安装,只有安装好了,我们才可以对其进行练习和使用,最终达到掌握的目的。
Nginx是一个开源的软件,我们可以从官网上下载其最新的版本进行安装和使用。
Nginx的下载
官网:http://nginx.org/en/download.html
我们下载nginx-1.14.1版本,下载的是Nginx的源码,C语言写的。
Nginx的安装过程
源码的安装一般有三个步骤:配置(configure)、编译(make)、安装(make install)
在centos7的虚拟机根目录下建立/data/program的文件夹,用来存放应用程序文件
把下载的nginx-1.14.1.tar.gz文件上传到/data/program的文件夹下
解压nginx-1.14.1.tar.gz文件
tar -zxvf nginx-1.14.1.tar.gz
在/data/program目录下创建nginx文件夹把Nginx软件安装到该目录下,便于管理
对nginx进行安装前的配置检查
./configure --prefix=/data/program/nginx
在配置检查这一步,可能会遇到一些缺少依赖库的问题,按照提示用yum命令进行安装即可
依赖安装后,再一次执行命令对Nginx进行安装前的配置检查,不通过则继续yum安装依赖,直到配置检查通过
1、找不到c编译器:yum -y install gcc
2、找不到PCRE library:yum -y install pcre-devel
3、找不到zlib包:yum -y install zlib-devel配置好之后,进行编译和安装
make && make install
进入nginx目录下,出现conf,html,logs,sbin目录,则说明安装完成。
[root@base-1 nginx]# ls
conf html logs sbin
[root@base-1 nginx]#Nginx的启动和停止
Nginx的启动
到/data/program/nginx/sbin目录下执行./nginx
[root@base-1 sbin]# pwd
/data/program/nginx/sbin
[root@base-1 sbin]# ls
nginx
[root@base-1 sbin]# ./nginx
查看效果
启动后,访问nginx,浏览器输入:http://192.168.1.8
如果访问不到,说明防火墙的问题
临时关闭防火墙:systemctl stop firewalld
防火墙禁止开机启动:systemctl disable firewalld
访问到上图的界面,说明Nginx已经生效。
Nginx的停止
到/data/program/nginx/sbin目录下执行./nginx -s stop
[root@base-1 sbin]# ./nginx -s stop
知识指导行动,行动决定命运。