Nginx简介
传统的 Web 服务器,每个客户端连接作为一个单独的进程或线程处理,需在切换任务时将 CPU 切换到新的任务并创建一个新的运行时上下文,消耗额外的内存和 CPU 时间,当并发请求增加时,服务器响应变慢,从而对性能产生负面影响。
在这里插入图片描述
因此导致我们迫切需要几个高性能的Web服务器。目前常见的应用服务器:Apache/Microsoft IIS/Tomcat/Lighttpd/Nginx这几种,目前主流就是Apache跟Nginx两个Web服务器了。
Apache
Apache仍然是时长占用量最高的web服务器,据最新数据统计,市场占有率目前是50%左右。主要优势在于一个是比较早出现的一个Http静态资源服务器,同时又是开源的。所以在技术上的支持以及市面上的各种解决方案都比较成熟。Apache支持的模块非常丰富。
Nginx
Nginx是俄罗斯人编写的一款高性能的HTTP和反向代理服务器,Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是,Nginx 是免费的并可以商业化,配置使用也比较简单。
选择Nginx的理由也很简单:第一,它可以支持5W高并发连接,第二,内存消耗少,第三,成本低,如果采用F5、NetScaler等硬件负载均衡设备的话,需要大几十万。而Nginx是开源的,可以免费使用并且能用于商业用途。
Nginx 使用场景:
反向代理
缓存跟负载均衡
静态资源服务,通过本地文件系统提供服务;
Keepalived + Nginx 实现高可用
正向代理和反向代理
正向代理
意思是一个位于客户端和原始服务器(origin server)之间的服务器, 为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。比较通俗的例子。
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。对于用户来说只知道这个网址的存在是不知道若干server的!
在这里插入图片描述
负载均衡
一般情况下,客户端发送多个请求到服务器,服务器处理请求,其中一部分可能要操作一些资源比如数据库、静态资源等,服务器处理完毕后,再将结果返回给客户端。这种模式对于早期的系统来说,功能要求不复杂,且并发请求相对较少的情况下还能胜任,成本也低。随着信息数量不断增长,访问量和数据量飞速增长,以及系统业务复杂度持续增加,这种做法已无法满足要求,并发量特别大时,服务器容易崩,比如我们部署的Tomcat服务是有服务瓶颈的。
很明显这是由于服务器性能的瓶颈造成的问题,除了堆机器之外,最重要的做法就是负载均衡(Load Balance)。请求爆发式增长的情况下,单个机器性能再强劲也无法满足要求了,这个时候集群的概念产生了,单个服务器解决不了的问题,可以使用多个服务器,然后将请求分发到各个服务器上,将负载分发到不同的服务器,这就是负载均衡,核心是「分摊压力」。Nginx 实现负载均衡,一般来说指的是将请求转发给服务器集群。
在这里插入图片描述
动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
一般来说,都需要将动态资源和静态资源分开,由于 Nginx 的高并发和静态资源缓存等特性,经常将静态资源部署在 Nginx 上。如果请求的是静态资源,直接到静态资源目录获取资源,如果是动态资源的请求,则利用反向代理的原理,把请求转发给对应后台应用去处理,从而实现动静分离。
使用前后端分离后,可以很大程度提升静态资源的访问速度,即使动态服务不可用,静态资源的访问也不会受到影响。
在这里插入图片描述
Nginx安装
一般情况下有两种安装方式
- 自动化安装
切换至root用户
sudo su root
apt-get install nginx
1
2
3
在这里插入图片描述
查看nginx是否安装成功
在这里插入图片描述
启动nginx
在这里插入图片描述
启动后,在网页重输入ip地址(重要:可能需要关闭防火墙或者开发指定端口才可以正常访问哦),即可看到nginx的欢迎页面。至此nginx安装成功
在这里插入图片描述
nginx文件安装完成之后的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
卸载nginx
彻底卸载nginx
apt-get --purge autoremove nginx
#查看nginx的版本号
nginx -v
1
2
3
4
在这里插入图片描述
- 源码安装
安装依赖包
apt-get install gcc
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g zlib1g-dev
Ubuntu14.04的仓库中没有发现openssl-dev,由下面openssl和libssl-dev替代
#apt-get install openssl openssl-dev
sudo apt-get install openssl
sudo apt-get install libssl-dev
安装nginx
cd /usr/local
mkdir nginx
cd nginx
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz
在这里插入图片描述
编译nginx
进入nginx目录
cd /usr/local/nginx/nginx-1.13.7
执行命令
./configure
执行make命令
make
执行make install命令
make in