Nginx常⽤模块及使⽤⽰例Nginx模块介绍
核⼼模块:core module
标准模块:
HTTP modules:
Standard HTTP modules
Optional HTTP modules
Mail modules
Stream modules
第三⽅模块
使⽤⽰例
核⼼模块
#main block
user www www; #进程运⾏使⽤的⽤户和组
pid logs/nginx.pid; #指定存储nginx主进程号的⽂件路径
include vhost/*.conf; #指明包含进来的其他配置⽂件 #pe #指明包含进来的其他⽂件类型
#load module file; #指明要装载的动态模块
worker_processes 4 | auto; #worker进程的数量,应⼩于等于cpu核⼼数,auto为当前主
#机cpu核⼼数
worker_cpu_affinity 0001 0010 0100 1000; #将worker进程与通过cpumask与指定cpu绑定
worker_priority -10; #指定worker进程的nice值,范围[-20,20]卧式钻床
worker_rlimite_nofile 2000; #指定worker进程能够打开的最⼤⽂件数
豆渣搅拌机
#daemon on; #是否已守护进程⽅式运⾏Nginx#master_process on; #是否已master-worker模型运⾏Nginx,默认on
error_log /var/log/nginx-error.log info; #错误⽇志
events { #事件驱动相关配置
use epoll; #指明并发连接请求的处理⽅式 worker_connections 2048; #每个worker进程能够打开的最⼤并发连接数
#accpet mutex on | off; #处理新连接的⽅式,on意味着由每个worker轮流处理新请
#求,off意味着每个新请求到达都会通知所有worker进程
}
标准模块-HTTP modules
与套接字相关配置
1.server { ... }
配置⼀个虚拟主机
server {
listen address[:PORT] | PORT;
server_name SERVER_NAME;
root /PATH/TO/DOCUMENT_ROOT;
柔性触觉传感器
}
2.listen PORT | address [:PORT] |unix:/PATH/TO/SOCKET_FILE
listen address [:PORT] [ssl] [http2 | spdy] [backlog=number] [rcvbuf=size] [sedbuf=size]
default_server:设置为默认虚拟主机
ssl:设置仅能通过ssl协议提供服务
backlog:设置后援列队长度
sedbuf:设置发送缓存区⼤⼩
3.server_name name ... ;
指明虚拟主机的主机名称;后可跟多个由空⽩字符分割的字符串;
⽀持*通配符任意长度字符:server_name *. www.richfit.*
⽀持~起始的字符做正则表达模式匹配:server_name ~^www.\d+\.richfit\$
匹配机制:
(1)⾸先是字符串精确匹配
(2)左侧*通配符匹配
(3)右侧*通配符匹配
(4)正则表达式匹配
4.sendfile on | off;
是否开启sendfile功能;
在keepalived模式下的连接是否启⽤tcp_nodelay选项;表⽰是否将⼩⽂件合并发送
tcp_nopush on | off;
在sendfile模式下是否启⽤tcp_cork选项;表⽰是否等待IP⾸部与⽂件合并发送
定义路径相关配置
< path;
设置web资源路径映射;⽤于指明⽤户请求的url所对应的本地⽂件系统上的⽂档所在⽬录路径;
2.location [ = | ~ | ~* | ^~ ] uri { ... }
在⼀个server中可配置在多个location配置段,⽤于实现uri到⽂系统的路径映射;nginx会根据⽤户请求的URI来检查定义所有的location,并从中选择⼀个最佳匹配,然后应⽤配置;
= :对URI做精确匹配
~ :对URI做正则表达模式匹配,区分⼤⼩写
~*:对URI做正则表达模式匹配,不区分字符⼤⼩写
^~:对URI左侧部分做正则表达模式匹配,不区分⼤⼩写
不带符号:匹配起始于该URI的所有URL
匹配优先级:= , ^~ ,~/~* ,不带符号
3.alias path;
定义路径别名,⽂件映射的另⼀种机制,仅能⽤于location配置段
4.index file ...;
请求的默认资源
<_page code ... [=[response]] uri;
指定错误代码展⽰所定义的uri
<_files file ... uri;
try_files file ... =code;
旋转座椅通过指定顺序查看⽂件是否存在并⽤到的第⼀个⽂件相应请求
1.keepalived_timeout timeout [header_timeout];
设置保持连接的超时时长,0表⽰禁⽌保持连接,默认为75s;
2.keepalived_requests number;
⼀次长连接允许请求的最⼤资源数量,默认100
3.keepalived_disable none | browser;
对哪种浏览器禁⽌长连接
4.send_timeout time;
向客户端发送响应报⽂的超时时长,此处指两次写操作之间的时间间隔
5.client_body_buffer_size size;
⽤于接收客户端请求报⽂body部分的缓冲区⼤⼩,默认为16k,超过此⼤⼩将被暂存到磁盘上由client_body_tmp_path定义的位置
6.client_body_tmp_path path [ level1 [ level2 [ level3 ];
定义⽤于存储客户端请求报⽂body部分的临时存储路径和⼦⽬录结构、数量
client_body_tmp_path /var/tmp/client_body 1 2 2
1:表⽰⽤1位16进制数字表⽰⼀级⼦⽬录:0-f
2:表⽰⽤2位16进制数字表⽰⼆级⼦⽬录:00-ff
3:表⽰⽤2位16进制数字表⽰三级⼦⽬录:00-ff
对客户端进⾏限制的相关配置
1.limit_rate rate;
限制响应客户端请求的传输速率,单位bytes/senond,0表⽰不限制
生产企业原材料的订购与运输2.limit_except method { ... };
限制对指定请求⽅法之外的其他⽅法使⽤的客户端
⽂件操作优化相关配置
1.aio on | off | threads[=pool];
是否开启aio功能
2.directio size | off;
启⽤Linux的O_DIRECT标记,此处意味着⼤于等于给定⼤⼩时使⽤,
3.open_file_cache off;
open_file_cache max=N [ inactive=time ];
可缓存最⼤N个缓存项,Nginx可缓存的信息包括:
(1)⽂件描述符,最后更新时间,时间戳
(2)打开的⽬录结构
(3)未到或没有权限访问的⽂件相关信息
max=N:表⽰可缓存项的上限,超过上限后使⽤LRU算法实现缓存管理;
inactive=time:缓存项的⾮活动时间,在给定时间内未命中或命中数少于open_file_cache_min_uses定义的次数的缓存项视为⾮活动项
4.open_file_cache_valid time;
缓存项有效性检查的频率,默认60s
5.open_file_cache_min_uses number;
在open_file_cache中inactive定义的时间内,命中超过多少次可视为活动项
6.open_file_cache_errors on | off;
是否打开缓存项错误⽇志
ngx_http_access_module模块:
实现基于ip的访问控制
1.allow address | CIDR | unix: | all;
2.deny address | CIDR | unix: | all;
ngx_http_auth_basic_module模块:
实现基于⽤户的访问控制,使⽤basic机制进⾏⽤户认证;
3.auth_basic string | off;
4.auth_basic_user_file file;
location /admin/ {
alias /webapps/app1/data/;
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.ngxpasswd;
}
ngx_http_stub_status_module模块:
⽤于输出nginx的基本状态信息;
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
Active connections: 活动状态的连接数
accepts:已接收的客户端请求数量
handled:已处理的客户端请求数量
requests:客户端发送的总请求数
Reading:正在读取客户端请求报⽂⾸部的连接数
Writing:正在向客户端发送响应报⽂的连接数
Waiting:正在等待客户端发送请求报⽂的空闲连接数
5.stub_status;
配置⽰例:
location /basic_status {
stub_status;
弹性钢}
ngx_http_log_module模块:
1.log_format name string ... ;
定义⽇志输出格式,string可以nginx核⼼模块和其他模块内嵌的变量
2.access_log path [ format [ buffer=size ] [ gzip [=level ] ] [ flush=time ] [ if=condition ] ];
access_log off;
访问⽇志路径配置
3.open_log_file_cache max=N [ inactive=time ] [ min_uses=N] [ valid=time ]
open_log_file_cache off;
缓存⽇志的元数据相关配置
max:缓存的最⼤⽂件描述符数量
inactive:定义⾮活动时长
min_uses:在inactive时间内超过多少次可以视为活动项
valid:缓存项有效性检查频率
ngx_http_gzip_module模块:
是否开启响应报⽂压缩
压缩等级,level的取值范围为1-9
响应报⽂"User-Agent"中包含匹配regex的报⽂不启⽤压缩