目录
简介
在公司的工作中,接触到阿里云的组网方式和网络架构这一块,其中除了SLB,最常用的还有Nginx Web服务器。其中涉及到Nginx的四层代理、七层代理、静态路由、反向代理等知识。在参阅了相关的学习资料后,今天就对常用的Nginx模块以及配置方法做一个较为详细的总结记录。
Nginx是什么?
Nginx是俄罗斯的Igor Sysoev在为Rambler Media工作期间,使用C语言开发的具有高可靠性、高性能、高扩展性且支持诸多操作系统等特性的跨平台的Web服务器,使用Nginx服务器,能够减小其上游服务器的压力。因为其出色的性能,其作为Web服务器被广泛应用到了大流量的网站上,如国内的腾讯、网易和阿里等等。
Nginx中包含了许多的模块,用户在安装的时候可以根据自己具体使用到的模块进行安装,目前使用最多的应该就是HTTP模块,使用HTTP的代理模块属于Nginx的七层应用代理,本文的末尾会补充讲一下Nginx的四层应用代理,以及它们之间的区别。首先,我们就从最常用的HTTP模块讲起,介绍具体使用过程中如何配置使用HTTP模块。
Nginx全局配置
默认编译安装Nginx后,Nginx的默认安装根目录为/usr/local/nginx,Nginx默认的可执行文件的路径为/usr/local/nginx/sbin/nginx,Nginx默认的配置文件路径为/usr/local/nginx/conf/nginx.conf,用户可以通过参数在编译时自行设置Nginx的这些路径。在Nginx的配置文件中,大概由以下的一些配置项组成,Nginx全局配置、Nginx事件类配置、Nginx模块配置(如HTTP模块),其中模块配置中又包含了虚拟服务器配置块、location配置块、负载均衡配置块等等。这些配置定义了Nginx的工作方式。在Nginx的配置中,可以使用include包含预定义的配置文件,只要保证配置文件格式正确,include可以被包含在HTTP、Server等配置块。
首先需要介绍的是Nginx的全局配置,具体的配置字段及说明如图
全局配置之事件类配置
其中最后两个配置项应当放在events事件类配置项中,在事件类配置项中还可以配置以下配置项
负载均衡锁:
accept_mutex on(默认)/off;
负载均衡锁文件路径:
lock_file path/file;
使用负载均衡锁后到真正建立连接时间的最大延迟:
accept_mutex_delay 1000ms(默认500ms);
批量建立新连接:
multi_accept on/off(默认);
选择事件模型(对于Linux来说有以下三种,如果未选择的话Nginx会自动使用最适合的事件模型):
use poll/select/epoll;
Nginx配置文件的顶部应该应该先定义全局配置,因此该配置处于Nginx的配置文件顶部。
使用Nginx的HTTP模块配置静态Web服务器
在Nginx的配置中定义了全局配置之后,就可以开始对Nginx中使用的模块进行配置,本文主要针对HTTP模块的配置做详细讲解。在Nginx中支持使用HTTP模块配置静态Web服务器,所谓静态Web服务器,也就是不使用反向代理,Nginx在接收到请求后不通过上游的服务器处理,而是直接由Nginx处理并返回请求。由于Nginx的功能很强大,涉及到的配置项较多,这里只列出了常用的一些配置项。
HTTP配置项
使用Nginx的HTTP