初识高性能nginx(一)
nginx生效主要是在其配置文件中进行设置,一般来说,nginx的配置文件名为nginx.conf。结构为:
event {
#
}
http {
#
#
server{
#可以配置https证书
#
location {
}
}
server {
#可以配置相应站点的https证书
#
location {
}
}
}
1.1、全局块是默认配置文件从开始到event块之间的一部分内容,主要设置一些影响Nginx服务器整体运行的配置文件,因此,这些指令的作用域是nginx服务器全局。通过包括
配置运行Nginx服务器的用户(组)
允许生成的work process数
nginx进程PI存放路径
日志的存放路径和类型
配置文件引入等。
1.2、event块涉及的指令主要影响Nginx服务器与用户的网络连接。常用到的设置包括
是否开启对多worker process下的网络连接进行序列化
是否允许同时接受多个网络连接
选取那种事件驱动模型处理连接请求
每个work process可以同时支持的最大连接数等
这一部分的指令对Nginx服务器的性能影响较大,在实际配置中应该根据实际情况灵活调整。
1.3、http块是Nginx服务器配置中的重要部分
代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这个模块中。
http块中可以包含自己的全局狂,也可以包含server块、server块中又可以进一步包含location块,在本书中我们使用"http全局块"来表示http中自己的全局块,即http块中不包含在server块中的部分。
可以在http全局块中配置的指令包括
文件引入
MIME-Type定义
日志自定义
是否使用sendfile传输文件
连接超时时间
单链接请求数上限
1.4、server块
先说一下虚拟主机
虚拟主机又称虚拟服务器、主机空间或者网页空间,它是一种技术。虚拟主机技术使得Nginx服务器可以在同一台服务器上只运行一组Nginx进程,就可以运行多个网站。
每个server块就相当于一台虚拟主机。它内部可有多台主机联合提供服务,一起对外提供在逻辑上关系密切的一组服务。
常见配置:
本虚拟主机的监听配置
本虚拟主机的名称或ip配置
1.5、location块其实是server块的一个指令。每个server块中可以包含多个location块。
作用:
基于Nginx服务器即受到的请求字符串
对除虚拟主机名称值为的字符串进行匹配
对特定的请求进行处理
地址定向、数据缓存和应答控制
第三方模块
2.1、配置允许生成的worker process数,它是服务器实现并发处理服务的关键所在。从理论上上说,其值越大,可以支持的并发处理量也越多,但实际上它还要收到来及软件自身、操作系统本身的能力和硬件设备的制约。
worker_processes number | auto;
number:指定Nginx进程最多可以产生的worker process数
auto:设置此值,Nginx进程将自动检测
默认为1
#ps ax | grep nginx
可以查看启动的nginx进程有哪些。
2.2、设置网络连接的序列化。为了避免“惊群”的问题,Nginx配置中包含一条指令,叫 accept_mutex,当其设置为开启的时候会对多个Nginx进程接收连接进行序列化,防止多个进程对连接的争抢。
accept_mutex on | off
默认为关闭(off)状态,只能在event模块中进行配置。
2.3、设置是否允许同时接收多个网络连接
每个Nginxfuwuq 的worker process 都有能力同时接收多个新到达的网络连接,但是这需要在配置文件中进行设置,器指令未 multi_accept ,语法结构为:
multi_accept on | off
默认为关闭(off)状态,只能在event模块中进行配置。
2.4、事件驱动模型的选择。Nginx服务器提供了多种事件驱动模型来处理网络消息。配置文件中为我们提供了相关的指令来强制Nginx服务器选择哪种事件驱动模型进行消息处理,指令为use,语法结构为:
use method;
method可选的内容有:
select
poll
kqueue
epoll:是Nginx服务器支持的高性能事件驱动库之一。事件由内核通知,不需要进行轮询。
risig
/dev/poll
eventport
2.5、配置最大连接数
指令worker_connections 主要用来设置允许每一个worker process 同时开启的最大连接数。其语法结构为:
worker_connections number;
此指令的默认设置为512。number的值不能大于操作系统支持打开的最大文件句柄数量。
只能在event块中进行配置。
2.6、配置连接超时时间
与用户简历会话连接后,nginx服务器可以保持这些连接打开一段时间,指令keepalice_yimeout就是用来设置此时间的,其语法结构是:
keepalive_timeout timeout[header_timeout];
timeout:服务器端对连接的保持时间。默认值为75s。
header_timeout,可选项,在应答报文头部的Keep-Alive域设置超时时间。
示例:
keepalive_timeout 120s 100s;
此指令可在http块、server块或location块中配置。
2.7、单连接请求数上限
指令keepalive_requests 用于限制用户通过某一连接向Nginx服务器发送请求的次数。
keepalive_requests number;
此指令还可以出现在server块和location块中,默认设置为100。
2.8、基于ip配置nginx的访问权限
需要ngx_http_acess_module支持。
allow指令:设置允许用户访问Nginx的客户端IP,语法结构为:
allow address | CIDR | all
注意事项:
(1) 、address不能同时写多个,只能多写allow命令。
(2)、CIDR是网络段
(3)、all代表允许所有客户端访问
deny命令:限制访问的Ip地址
deny address | CIDR | all
一般是两个指令配合使用,通过组合的办法来解决范围。与ssh限制ip是一样的。
该指令只能在location块中进行配置。
2.9、基于密码配置nginx的访问权限
需要有auth_http_auth_basic_module支持。
2.9.1、auth_basic 指令用于开启或关闭该功能
auth_basic string | off;
2.9.2、auth_basic_user_file指令,用于设置包含用户名和密码信息的文件路径,语法结构为:
auth_basic_user_file file;
其中file为密码文件的绝对路径。