1. Nginx是什么?
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器
Nginx可以作为一个Web服务器进行网站的发布,也可以作为反向代理进行负载均衡的实现,还可以作为邮件服务器
常见的Web服务器:Tomcat、Apache、Nginx、WebLogic、Jetty、IIS等
2. 特点
占用内存少,并发能力强(Nginx可处理2-3W并发连接,Apache可处理2-3K并发连接)
国内使用nginx的网站:百度、新浪、网易、腾讯、淘宝、京东等
参考: 官网 http://nginx.org
1. 安装nginx
步骤:
-
下载nginx认证key文件,并添加到apt-key中
注:添加认证文件是为了让apt包管理器能够认证nginx包
-
配置apt源,添加nginx软件源
编辑/etc/apt/sources.list文件,在末尾添加如下内容:
-
更新apt软件源,并安装nginx
注:下载的安装文件为nginx_1.14.0-1~trusty_i386.deb
-
访问测试
注:nginx默认使用的端口是80
2. 目录结构
执行查看
3. 相关命令
4. 关于配置文件
主配置文件nginx.conf
1. 简介
在一台服务器上搭建多个网站,每个网站对应一个Web站点,有独立的域名和目录,称为虚拟主机
Nginx的虚拟主机是通过server节点配置的
2. 配置
步骤:
-
准备网站目录及测试页面
-
配置虚拟主机
实现虚拟主机的三种方式:基于不同的IP、不同的端口 或 不同的域名(推荐)
编辑配置文件
server { listen 80; server_name www.ums.com;
} server { listen 80; server_name www.sms.com;
}
-
访问测试 http://www.ums.com
http://www.sms.com
1. 简介
-
正常请求
客户端发送请求给服务器,服务器接收请求并响应数据
-
正向代理
概念:位于客户端和原始服务器之间的服务器,为了从原始服务器获取数据,客户端向代理服务器发送请求并指定请求目标(原始服务器) ,然后代理服务器将请求转发给原始服务器,并将响应的数据返回给客户端
正向代理是客户端使用的,对客户端进行代理,客户端知道并主动使用代理服务器
作用:
- 访问原来无法访问的资源(google、facebook等),也称为翻墙
- 可以做缓存,加速访问资源
- 对客户端上网进行认证授权
- 上网行为管理,记录用户访问记录,对外隐藏用户信息,如CCProxy
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MzodsLe4-1669467452682)(assets/正向代理.png)]
-
反向代理
概念:客户端发送请求到服务器(客户端认为是原始服务器,实际上是一台反向代理服务器),反向代理服务器接受请求并将请求转发给内部网络中的集群服务器,并将响应的数据返回给客户端,此时代理服务器对外就表现为一个反向代理服务器
反向代理一般用于服务器集群、分布式部署等情况,实现负载均衡,如淘宝(使用的是封装了Nginx的Tengine)
反向代理是为内部服务器提供代理,对客户端来说是透明的,所以称为反向代理
作用:
- 负载均衡,提高响应和处理速度
- 保证内网的安全,隐藏服务器信息,防止Web攻击
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kdDq3cnN-1669467452682)(assets/反向代理.png)]
2. 配置
使用Nginx作为反向代理服务器,如反向代理Tomcat
步骤:
-
配置反向代理
编辑配置文件
-
配置域名解析
编辑域名解析文件
-
访问测试
http://www.tomcat.com
1. 简介
将接收到的请求按照一定的规则分发到不同的服务器进行处理,从而提高系统响应和处理速度,称为负载均衡
Nginx可以作为反向代理,实现负载均衡,此时既是反向代理服务器,也是负载均衡服务器
2. 配置
步骤:
-
准备网站(模拟淘宝,假设有两个后台服务器)
-
配置负载均衡
编辑配置文件
-
配置域名解析
编辑域名解析文件
-
访问测试
http://www.taobao.com 多次刷新页面,查看是哪个后台服务器进行响应的
1. 简介
问题:tomcat在处理静态资源时效率不高,默认情况下所有资源都是由tomcat处理响应的,会导致Web应用响应慢,占用系统资源
解决:将静态资源的请求交由Nginx处理,动态资源(jsp、servlet等)仍由tomcat来处理,实现动静分离
实际上就是将Nginx作为静态资源服务器,通过Nginx来下载静态资源文件
注:Nginx处理静态资源的能力很强,但动态处理能力不行,因此在企业中常使用动静分离技术
2. 配置
步骤:
-
配置动静分离
编辑配置文件
-
创建存放静态资源的文件夹,并将静态资源放到该目录中
-
访问测试
http://www.taobao.com
此时静态资源的请求都是由Nginx进行处理响应的
1. 高并发的处理
高并发时如何优化?
- 负载均衡:即集群,通过多台服务器进行负载均衡,提高响应和处理速度
- 动静分离:使用Nginx实现、CDN
- 缓存:以空间换时间,提高系统效率
- 限流:即流量控制,将过量的请求先放到队列中,等待一定时间后再从队列中取出处理,类似于地铁限流,排队放行
- 降级:即服务降载,将非核心服务进行降级,暂时性的关闭,降低负载,保证核心服务的正常运行,丢卒保帅
2. 集群环境下session的处理
几种解决方法:
-
Session保持:负载均衡进行请求分发时保证每个客户端固定的访问后端的同一台服务器,如Nginx的ip_hash策略
优点:简单,不需要对session做任何处理
缺点:无法保证负载绝对的均衡
缺乏容错性,如果当前访问的服务器发生故障,用户被转移到第二个服务器上时,他的session信息都将失效
-
Session复制:将每个服务器中的Session信息复制到其它服务器节点,保证session的同步
缺点:如果session量大的话可能会造成网络堵塞,拖慢服务器性能