Tengine 常用模块使用介绍 | ||||||||||||||||||||||||||||||||||||||||||
Tengine 和 NginxTengine简介从2011年12月开始:Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能 和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平 台。(来自于http://tengine.taobao.org/) Nginx简介Nginx是一个开源项目,是一个高性能的HTTP server 和 reverse proxy,也可以作为IMAP/POP的反向代理,通过简单的配置,就可以实现高性能,且占用系统资源较小。Nginx设计之初是为了解决C10K问 题,其非常轻量级,仅支持event模型。 特性Nginx的特性
Tengine特性
Tengine安装下载地址:http://tengine.taobao.org/
启动前配置:
一、核心模块1、Main端配置
A、必备常用配置1、user 指定用于运行worker进程的用户和组 Syntax: user user [group]; 2、pid 指定nginx进程的pid文件路径 yntax: pid file; 3、worker_rlimit_nofile number 单个worker进程所能够打开的最大文件数 Syntax: worker_rlimit_nofile number; B、性能优化相关配置1、 worker_processes number | auto worker的进程数;通常应该为CPU的核心数减1 Syntax: worker_processes number | auto; 2、worker_cpu_affinity cpumask … 将work进程绑定到cpu上 Syntax: worker_cpu_affinity cpumask …; 例子:
3、worker_priority nice 定义work进程的优先级,数字越小优先级越高 [-20,19] C、调试定位问题1、daemon on | off 是否以守护进程方式启动nginx进程 Syntax: daemon on | off; 2、master_process on | off 是否以master/worker模型启动nignx进程 Syntax: master_process on | off; 3、error_log file | stderr | syslog:server=address[,parameter=value] | memory:size [debug | info | notice | warn | error | crit | alert | emerg] 错误日志记录方式,及其日志级别
2、events段配置1、worker_connections number 每个worker进程所能够并发打开的最大连接数 Syntax: worker_connections number; 2、use method 指明并发连接请求处理时使用的方法 Syntax: use method; 3、accept_mutex on | off 启用时,表示用于让多个worker轮流地、序列化地响应新请求 Syntax: accept_mutex on | off; 3、server段常用配置1、listen address[:port] [default_server] [ssl] [backlog=number] [rcvbuf=size] [sndbuf=size] listen port [default_server] [ssl]; 2、server_name name … 主机名 Syntax: server_name name …; 应用策略: For example: 3、tcp_nodelay on|off 对keepalived模式下的连接是否启用TCP_NODELAY选项 Syntax: tcp_nodelay on | off; 4、sendfile on | off 是否启用sendfile功能 Syntax: sendfile on | off; 4、路径相关配置1、root path 设置web资源路径映射 Syntax: root path; For example:
2、location [ = | ~ | ~* | ^~ ] uri { … } Syntax: location [ = | ~ | ~* | ^~ ] uri { … } 根据用户请求的URI来匹配定义的location,匹配到时,此请求将被相应的location块中的指令所处理; 匹配优先级:=、^~、~/~*、不带符号; For example:
2、alias path 定义路径别名 Syntax: alias path; For example:
3、error_page code … [=[response]] uri Tengine配置选项众多,此处就介绍到此,如果有兴趣可以参考nginx官方文档或者tengine的官方文档,此处不在过多介绍,下面介绍几个常见使用的模块,ssl、rewrite、gzip、fastcgi、防盗链、stasus等功能 二、Tengine常用模块1、Module ngx_http_rewrite_modulengx_http_rewrite_module 模块可以通过使用正则表达式,重定向请求url。 A、rewrite regex replacement [flag] 重定向请求 把用户请求的URI基于regex做检查,匹配到时将替换为replacement指定的字符串 在同一个location中存在的多个rewrite规则会自上而下逐个被检查(循环),可以使用flag控制此循环功能 如果replacement是以http://或https://开头,则替换结果会直接以重定向方式返回给客户端 [flag]:
B、rewrite_log on | off 是否启用重写日志 启用时,日志信息被发往错误日志 Syntax:rewrite_log on | off; Context:http, server, location, if C、if (condition) { … } 条件判断机制 在条件满足时,执行配置块中的配置 condition: 比较表达式: ==, !=
文件及目录存在性判断:
For example:
D、return code [text];停止处理并将指定的代码返回给客户端 Syntax:return code [text]; return code URL; return URL; Default:— Context:server, location, if E、set $variable value用户自定义变量 Syntax:set $variable value; Default:— Context:server, location, if ngx_http_rewrite_module 示例:
测试效果:
if (condition) { … } 示例
2、Module ngx_http_gzip_module过滤器,对指定类型的资源压缩传输以节约带宽 gzip on | off; 启用或禁用gzip压缩响应报文; Syntax:gzip on | off; Default:gzip off; Context:http, server, location, if in location gzip_comp_level level; 指定压缩比,1-9,默认为1; Syntax:gzip_comp_level level; Default: gzip_comp_level 1; Context:http, server, location gzip_disable regex …; regex是匹配客户端浏览器类型的模式,表示对所有匹配到的浏览器不执行压缩响应; Syntax:gzip_disable regex …; Default:— Context:http, server, location This directive appeared in version 0.6.23. gzip_min_length length; 触发启用压缩功能的响应报文的最小长度; Syntax:gzip_min_length length; Context:http, server, location gzip_http_version 1.0 | 1.1; 设定启用压缩响应功能时,协议的最小版本; Syntax:gzip_http_version 1.0 | 1.1; Default:gzip_http_version 1.1; Context:http, server, location gzip_types mime-type …; 指定仅执行压缩的资源内容类型;默认为text/html; Syntax:gzip_types mime-type …; Default:gzip_types text/html; Context:http, server, location gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …; 对代理的请求基于何种属性判断其是否应该启用压缩功能; Syntax:gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …; Default:gzip_proxied off; Context:http, server, location 示例: gzip on; gzip_http_version 1.0; gzip_comp_level 6; gzip_disable msie6; gzip_min_length 2; gzip_types text/plain text/css text/xml application/x-javascript application/xml application/json application/java-script; 测试示例: 未配置之前:查看Response Headers报文中是否有gzip选项 配置之后:查看Response Headers报文中是否有gzip选项 3、Module ngx_http_fastcgi_modulefastcgi_pass address address是fpm服务器监听的地址和端口; 示例: fastcgi 127.0.0.1:9000; fastcgi_index name fastcgi应用的主页名称 fastcgi_param parameter value [if_not_empty] 传递给fpm服务器的参数及其值 fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time]; path:文件系统路径,用于存储缓存的文件数据; max_size=size:定义此路径下的多大空间用于存储缓存数据; levels=#[:#[:#]]:缓存目录层级定义; levels=1:2 keys_zone=name:size 内存中用于缓存k/v映射关系的空间名称及大小; inactive=time 注意:只能定义在http上下文 For example:
存储格式:
fastcgi_cache zone | off 是否启用cache,如果启用,数据缓存于哪个cache中 fastcgi_cache_key string 定义要使用的缓存键 例如: fastcgi_cache_key $request_uri; fastcgi_cache_methods GET | HEAD | POST … 缓存哪些类型的请求的相关数据 fastcgi_cache_valid [code …] time 对不同响应码设定其可缓存时长 注意:调用缓存时,至少应该 指定三个参数 fastcgi_cache fastcgi_cache_key fastcgi_cache_valid 测试示例:
启用前查看:/var/data/nginx/cache目录 启动后查看:/var/data/nginx/cache目录 4、Module ngx_http_ssl_modulessl on | off 是否启用当前虚拟主机的ssl功能 Syntax:ssl on | off; Default:ssl off; Context:http, server ssl_certificate file 当前虚拟主机使用的PEM格式的证书文件 Syntax: ssl_certificate file; Default:— Context:http, server ssl_certificate_key file 当前虚拟机使用的证书文件中的公钥配对儿的私钥文件路径 Syntax:ssl_certificate_key file; Default:— Context:http, server ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] SSL协议的版本 Syntax:ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]; Default:ssl_protocols TLSv1 TLSv1.1 TLSv1.2; Context:http, server ssl_session_cache off | none | [builtin[:size]] [shared:name:size] 指明ssl会话的缓存机制 Syntax:ssl_session_cache off | none | [builtin[:size]] [shared:name:size]; Default:ssl_session_cache none; Context:http, server builtin:使用openssl内建的缓存机制,此为各worker独有; shared:由各worker共享的缓存; name:缓存空间的名称; size:字节为单位的缓存空间的大小;每1MB内存空间可缓存4000个会话 ssl_session_timeout time ssl会话超时时长,指ssl session cache中缓存条目有效时长 Syntax:ssl_session_timeout time; Default:ssl_session_timeout 5m; Context:http, server 示例: 配置文件:证书使用方式请查看我的另外一篇博客。
访问查看: 4、Module ngx_http_referer_modulevalid_referers none | blocked | server_names | string … referers:定义合法的数据,此模块用来定义哪些内容是合法的 Syntax:valid_referers none | blocked | server_names | string …; Default:— Context:server, location none表示请求报文首部没有referer首部 blocked表示请求报文的referer首部没有值 server_names表示其值是主机名 示例: 表示根据上面的定义,如果不合法就返回403
5、Module ngx_http_stub_status_modulestatus_module:用于输出nginx的基本状态信息示例:
访问并测试: 各参数的意义:
|