Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动

1. Nginx的介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行 其特点是占有内存少,并发能力强
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,于2004年10月4日发布第一个公开版0.1.0
将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名 ,2011年6月1日,nginx1.0.4发布
百度、京东、新浪、网易、腾讯、淘宝都使用nginx

从最早期的apache到现在nginx的普及: user用户增加——> apache
(服务器性能增加,而根据摩尔定理,服务器的处理能力增加和配置不成正比)为了不耗费配置——>此时nginx就产生了

2. nginx的优缺点

  • nginx (相对 apache )优点:
    轻量级,同样起web 服务,比apache 占用更少的内存及资源
    抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
    高度模块化的设计,编写模块相对简单
    社区活跃,各种高性能模块出品迅速
    Nginx本身就是一个反向代理服务器 Nginx支持7层负载均衡
    nginx 适合做静态,简单,效率高

  • nginx的缺点:
    Nginx仅能支持http、https和Email协议,在适用范围上面小些。
    对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。不支持Session的直接保持,但能通过ip_hash来解决。

3. Nginx的作用

  • 1. 反向代理
    反向代理是Nginx最常用的功能 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器
    并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器
    简单点说就是外部网络不能直接访问真实服务器,所以需要一台代理服务器, 而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台端口不同的服务器

  • 2. 正向代理
    正向代理,是一个位于客户端和原始服务器(origin server)之间的服务器 为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器)
    然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端才能使用正向代理

  • 3. 负载均衡
    负载均衡也是Nginx常用的一个功能 负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等
    从而共同完成工作任务,简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理
    负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡 而Nginx目前支持自带3种负载均衡策略,还有2种常用的第三方策略

  • 4. HTTP服务器(动静分离)
    Nginx本身也是一个静态资源的服务器,apache适用于动态资源当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现
    动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来
    动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路

4. 部署基本的nginx的服务器及其基本配置

1. 在nginx官网中下载文档版本的安装包
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
2. 编译、安装
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
语法检查
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动

3. 访问看到的是默认页面
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
4. 修改默认发表页面
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动

5. nginx的版本更新和回退(热部署)

Nginx 内部设计精密,热部署(在线升级)在nginx中是一个强大的功能。
nginx支持热加载热部署 ,其实就是在不打断用户请求的情况下更新版本,即在线更新版本
Nginx 采用了高度模块化的设计思路,并且内部的进程主要有两类 master 进程 和 worker 进程。
其中master进程是用来管理监控控制其下边的worker进程的主进程,这个进程由root发起其中原因是http这个服务需要启用80端口,而只有root才有权限启用80端口。
master 进程只有一个,worker 进程可以有多个。 worker 进程才是真正 working 的进程,才是真正处理请求的进程。worker 进程全部都是 master 的子进程
原理:
首先我们先会替换master进程,同时我们替换的master是与老版本的worker兼容的,保持还有连接的worker进程,待其老去退休,进行替换

热部署的分类

热部署成功(平滑更新) 在线更新nginx服务的版本并且更新成功,这个时候nginx的新版本和旧版本进程都可以同时工作,不影响客户的正常访问
热部署失败(回滚) 在线更新nginx服务的版本并且更新失败,这个时候就直接回退到原来的nginx版本进程,保证客户可以正常访问

1. 备份原版本
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
2. 下载安装另外一个版本的nginx
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
3. 版本更新

Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动

Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
4. 当替换更新的版本有问题,回退到之前的版本
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动

6. nginx日志切割

  • 5.1 为什么要对日志进行切割?
    nginx可以作为反向代理服务器,它一天接收的请求是非常非常多的,这样会导致日志文件非常非常大,如果日志大小超过内存,那这个日志是打不开的,服务器会被卡死,日志过大对于查看也是不方便的,所以我们需要对日志进行切割。

  • 5.2 切割日志方法

1. 日志文件太小,手动增大日志文件
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
3. 日志的备份以凌晨十二点为节点,进行备份前一天的日志内容

Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动

7. nginx 的gzip压缩

Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
开启zip压缩
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
文件变小,利于客户下载

Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动

8. nginx的启动

  • 前面我们启动nginx都是以脚本的形式:
    /usr/local/nginx/sbin/nginx

  • 启动服务也可以使用***systemctl*** 的方式:

  1. 官方系统自带的服务他的启动脚本默认放在***/usr/lib/systemd/system***目录下
    Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
    2. 编辑配置文件/etc/systemd/system/nginx.service

Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
3. 脚本方式关闭
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动

Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动
systemctl start nginx.service 开启
Nginx - 介绍、源码编译安装、热部署、日志切割、gzip压缩、启动