随着互联网时代的发展,使用电脑、手机及其他电子设备上网是日常生活中最常见的活动,那么这个上网过程是怎么实现的呢?主要是靠代理服务器。代理是在服务器和客户端之间假设的一层服务器,代理将接收的客户端请求转发给服务器,然后将服务端的响应转发给客户端。

Nginx是一款轻量级的Web服务器、反向代理服务器。基于REST架构风格,以统一资源描述符URI或统一资源定位符URL作为沟通依据,通过HTTP协议提供各种网络服务。由于它内存占用少,启动速度快,高并发能力强等优点,在互联网项目中广泛应用。 

1整体介绍 

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。 

1.1反向代理 

反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 

Nginx安装配置说明_nginx

 

如图,保存配置文件后启动Nginx,这样当我们访问localhost的时候,就相当于访问localhost:8080。 

1.2负载均衡 

负载均衡,其原理就是将数据流量分摊到多个服务器执行,减轻每台服务器的压力,多台服务器(集群)共同完成工作任务,从而提高数据的吞吐量,多在高并发情况下使用。可使用的负载均衡策略有:轮询(默认)、权重、ip_hash、url_hash(第三方)、fair(第三方)。 

Nginx安装配置说明_Nginx_02

 

如图,保存配置文件后启动Nginx,这样当我们访问localhost的时候,就相当于访问localhost:8080或者localhost:8081。因为Nginx会自动判断服务器的状态,如果服务器处于不能访问(服务器挂了),就不会跳转到这台服务器,所以也避免某台服务器挂了影响使用。 

1.3动静分离 

Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现,首先了解Nginx做静态资源服务器。 

Nginx安装配置说明_服务器_03

 

如图,这样如果访问http://localhost就会默认访问到E盘wwwroot目录下面的index.html,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。 

Nginx安装配置说明_Nginx安装_04

 

动静分离,常用于前后端分离,Nginx提供的动静分离是指把动态请求和静态请求分离开,合适的服务器处理相应的请求,使整个服务器系统的性能、效率更高。Nginx可以根据配置对不同的请求做不同转发,这是动态分离的基础。静态请求对应的静态资源可以直接放在Nginx上做缓冲,更好的做法是放在相应的缓冲服务器上。动态请求由相应的后端服务器处理。 

2安装配置 

本次以Nginx1.14.2版本为例,在linux服务器环境上进行安装部署,具体操作如下: 

2.1环境准备 

安装make: 

Nginx安装配置说明_Nginx安装_05

安装g++:

Nginx安装配置说明_Nginx安装配置_06

安装pcre和pcre-devel: 

Nginx安装配置说明_Nginx安装配置_07

安装zlibzlib提供了很多压缩和解方式,nginx需要zlib对http进行gzip: 

Nginx安装配置说明_Nginx安装_08

安装opensslopenssl是一个安全套接字层密码库,nginx要支持https,需要使用openssl:

Nginx安装配置说明_服务器_09

2.2安装配置 

下载nginx: 

Nginx安装配置说明_Nginx安装配置_10

进入文件夹: 

Nginx安装配置说明_nginx_11

解压: 

Nginx安装配置说明_Nginx安装_12

打开到文件路径: 

Nginx安装配置说明_Nginx安装_13

编译文件: 

Nginx安装配置说明_Nginx_14

安装: 

Nginx安装配置说明_nginx_15

更改配置文文件: 

Nginx安装配置说明_服务器_16

方式二:也可以将nginx.conf文件直接通过xftp上传到该位置,注意将原有文件进行备份: 

Nginx安装配置说明_Nginx_17

让配置立即生效: 

Nginx安装配置说明_nginx_18

2.3执行启动 

进入sbin目录: 

Nginx安装配置说明_nginx_19

启动nginx: 

Nginx安装配置说明_服务器_20

停止命令: 

Nginx安装配置说明_nginx_21

3高可用配置 

Keepalived是一个高可用解决方案,主要用来防止服务器单点发生故障,可以通过和Nginx配合来实现Web服务的高可用。 

3.1环境准备 

通过以下命令安装Keepalived: 

Nginx安装配置说明_Nginx_22

设置为系统服务: 

Nginx安装配置说明_Nginx安装_23

关闭SElinux、配置keepalived相关配置: 

Nginx安装配置说明_nginx_24

进入后如下修改: 

Nginx安装配置说明_服务器_25

修改完成后,让配置立即生效: 

Nginx安装配置说明_Nginx安装_26

修改keepalived配置,主从机不同的地方通过黄色高亮显示: 

Nginx安装配置说明_nginx_27

备份: 

cp/etc/keepalived/keepalived.conf/etc/keepalived/keepalived.conf.bak: 

Nginx安装配置说明_Nginx安装配置_28

Nginx安装配置说明_Nginx安装_29

Nginx安装配置说明_Nginx安装配置_30

3.2脚本配置 

配置chk_nginx.sh文件: 

Nginx安装配置说明_服务器_31

添加如下内容: 

Nginx安装配置说明_服务器_32

 

脚本进行授权: 

Nginx安装配置说明_Nginx安装配置_33

修改防火墙,添加对虚拟IP的监听: 

Nginx安装配置说明_服务器_34

3.3启停服务 

开启keepalived服务: 

Nginx安装配置说明_Nginx_35

 

停止keepalived服务: 

Nginx安装配置说明_nginx_36

4心得体会 

通过撰写本篇文档,意识到在实际项目工作过程中随手记录的重要性。在记录后,也需要相应的把记录内容整理到工作文档内,不断迭代完善自身能力。现从知识收获、意识形态、工作总结方面总结如下。 

4.1知识收获 

通过学习Nginx,了解了其很多特点: 

1.跨平台:可以在大多数UnixlikeOS编译运行,而且也有Windows的移植版本。 

2.配置简单:风格跟程序开发一样,容易上手。 

3.非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型) 

4.事件驱动:通信机制采用epoll模型,支持更大的并发连接。 

5.master/worker结构:一个master进程,生成一个或多个worker进程。 

6.内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx进程才消耗150M内存(15M*10=150M) 

7.成本低廉:开源软件,可以免费使用。 

8.内置的健康检查功能:如果NginxProxy后端的某台Web服务器宕机了,不会影响前端访问。 

9.节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。 

10.稳定性高:用于反向代理,宕机的概率微乎其微。 

4.2意识形态 

伴随着自身专业知识的不断积累,对知识的认知也不断地提高。回过头来看自己之前记录的工作文档,会发现有很多漏点存在,这时就需要再次完善工作文档了。在完善过程中,可以把初学时的理解和当下做一个比较,了解当时的自己有哪些不足,思维逻辑有了怎样改善。技术、认知在不断地更新,工作文档也在不断地更新。在这个不断迭代更新的过程中,使自己的知识点不知不觉连成了线。 

4.3工作总结 

在工作学习过程中通过不断地记录文档,可以从多方面提升自身的综合能力。一方面可以感觉得到自己的逻辑思维有了显著提升,尤其是在记录教程类的文档时,例如某些系统的使用手册。可以重新系统梳理技术要点。通过系统梳理,过程中不断提高自己的逻辑思维。一方面在有了一个清晰的逻辑思维后,对自己的技术能力和水平都有了系统的提升。同时撰写文档也是一个总结、反思的过程,能够帮助个人促进深入思考的能力。 

通过实际参与项目,在服务器上安装配置Nginx,不仅能提高对Nginx安装部署的经验,也加深了对Nginx知识的理解。后续也会继续整理相关的技术文档,迭代提升自身的工作能力,为后续的职业生涯奠定扎实的基础。