概述
ngx_http_autoindex_module目录索引模块
官网说明:
扩展配置文件中的配值:
测试的效果:
实践中的应用:
如果大家亲自到阿里云镜像网站中下载过Linxu系统的镜像文件,应该就会很熟悉上图中的索引列表目录页面。
用户通过点击相应的目录就可以下载自己想要的镜像文件。所以当自己搭建一个网站时,若想分享自己的一些资源,可以通过开启"ngx_http_autoindex_module"中的"autoindex"参数,让的用户可以从你的网站下载资源,从而实现数据的共享。
TIPS:
1.实现索引列表目录,切记要要将首页文件删除,或者随便写一个不存在的文件(就像我标红五角星的地方,随便写一个不存在的首页文件);index.html 文件最好删除,因为index指令默认值就是index.html,所以有时即使注释了index.html文件也没用。
2.点击索引列表目录中的文件动作是下载还是查看,是根据mime.types媒体资源类型文件而定的:
- mime.types文件中有列表目录中文件的后缀名信息,那么点击动作,就是直接查看文件中的信息
- mime.types文件中没有列表目录文件的后缀名信息,那么点击动作,就是下载文件
3.若是自己的站点中有中文名称的文件,开启索引列表目录功能,用浏览器访问网站出现乱码时,可以在"autoindex"参数下加上"charset utf-8"的参数配置。
ngx_http_stub_status_module统计模块
官网说明:
扩展配置文件中的配置:
测试的效果:
实践中的应用:
可以用于网站的监控,提前预警网站可能因访问量过大产生的问题。常和负载均衡机制联用。
ngx_http_log_module日志模块
此模块内容较多,我分成多个小部分来说明。
-
access_log参数:访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。当然具体要记录哪些信息,你可以通过log_format参数来定义。
语法:
path:指定日志的存放路径
format:指定日志的格式。默认使用预定义的combined
buffer:用来指定日志写入时的缓存大小(即数据先写到缓存,再写到硬盘中)。默认是64k
gzip:日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1
flush:设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容讲被清空
if:条件判断。如果指定的条件计算为0或空字符串,那么该请求不会写入日志。
off:如果指定了该值,当前作用域下的所有的请求日志都会被关闭 -
log_format参数:Nginx在nginx.conf主配置文件中预定义了名为combined日志格式,如果没有明确指定日志格式默认使用该格式:
如果不想使用Nginx预定义的格式,可以通过log_format参数来指定。
语法:
name:格式的名称。在access_log参数中引用。
escape :设置变量中的字符编码方式是json还是default,默认是default.
string:要定义的日志格式内容。该参数变量可以有多个。
下面是log_format参数中常用的一些变量:
$remote_addr:客户端的IP地址(代理服务器,显示代理服务器的IP)
$remote_user:记录远程客户端的用户名称,针对启用了用户认证请求,通常清空下为"-"
$time_local:记录访问时间和时区
$request:记录请求的URL以及请求方法
$status:响应的状态码
$bytes_sent:发送给客户端的总字节数
$body_bytes_sent:给客户端发送的主体内容字节数,不包括响应头的大小
$http_user_agent: 客户浏览器信息
$http_x_forwarded_for:可以记录客户端IP,通过代理服务器来记录客户端的IP地址。当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置。
$http_referer:记录用户是从哪个链接访问过来的
$time_iso8601:标准格式的本地时间
$msec:日志写入时间,单位为秒,精度是毫秒
$request_length:请求长度(包括请求行,请求头和请求体)
$request_time:请求处理时长,单位为秒,精度为毫秒。从读入客户端的第一个字节开始,直到把最后一个字节发送给客户端进行日志写入为止。
下面是我截取的一部分日志(combined格式)
可以看到最终的日志记录中 ”remote_user“、“http_referer”、http_x_forwarded_for都对应了一个"-",这是因为这几个变量为空。 -
open_log_file_cache参数:每一条日志记录的写入都是先打开文件再写入记录,然后关闭日志文件。如果日志文件路径中使用了变量,如 access_log /usr/log/nginx/$host/access.log,为了提高性能,可以使用open_log_file_cache参数设置日志文件描述符的缓存。当然,即使路径中使用了变量,也可以不用此参数。
语法:
max:设置缓存中最多容纳的文件描述符数量,如果被占满,采用LRU算法将描述符关闭。
inactive:设置缓存存活时间,默认是10s
min_uses:在inactive时间段内,日志文件最少使用几次,该日志文件描述符记入缓存,默认是1次
valid:设置多久对日志文件名进行检查,看是否发生变化,默认是60s
off:不使用缓存。默认为off -
error_log参数:(此参数属于Core functionality模块,因为和日志有关,就放在这里一起分享)错误日志在Nginx中是通过error_log参数来实现的。该参数记录服务器和请求处理过程中的错误信息。
语法:
第一个参数指定日志的写入路径。
第二个参数指定日志的级别。只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认是error.
错误级别:
ngx_http_rewrite_module重定向模块
ngx_http_rewrite_module模块用于通过正则表达式改变请求URI,返回重定向并可以有条件的选择配置;
-
if参数:条件判断机制,在条件满足时,执行配置模块中的配置,
语法:
condition中的一些匹配符号:
-
rewrite参数:如果指定的正则表达式与请求URI匹配,则将按照替换字符串修改URI。rewrite指令按照其在配置文件中的顺序一次执行。可以使用标志来终止指令。如果替换字符串以"http//"、“https//”、或"$scheme"开头,则处理停止并且将重定向返回给客户端。
可选的标志有:
last:停止处理当前的ngx_http_rewrite_module指令集合,开始搜索能够匹配修改过的URI的新的location
break:跟break参数一样,停止处理当前的ngx_http_rewrite_module指令集合
redirect:临时重定向
permanent:永久重定向
扩展配置文件中的配置:
测试结果:
-
break参数:用于停止当前处理的ngx_http_rewrite_module指令集合
语法:
-
return参数:停止处理并向客户端返回指定的状态码信息
语法:
-
rewrite_log参数: 启用或禁用将ngx_http_rewrite_module模块指令处理结果记录到通知级别的error_log中,默认关闭
语法:
-
set参数:为指定的变量设置一个值,该值可以包含文本、变量及其组合。
语法:
-
uninitialized_variable_warn参数:是否将为初始化的变量导致的警告写入日志。默认是开启的
语法:
ngx_http_ssl_module模块
ngx_http_ssl_module模块主要用于nginx的https协议。
-
ssl参数:是否开启ssl功能。为指定虚拟机启用https协议时,建议用listen参数代替(就是监听端口的那个listen)。
语法:
-
ssl_buffer_size参数:设置用于发送数据的缓冲区的大小。默认情况下,缓冲区大小为16k,这对应于发送大响应时的最小开销。为了最大程度的地缩短到第一个字节地时间,使用较小地值可能比较好,比如:ssl_buffer_size 4k。
语法:
-
ssl_certificate参数:当前虚拟主机使用地PEM格式地证书文件
语法:
-
ssl_certificate_key参数:当前虚拟主机使用地证书中与公钥配对地私钥文件
语法:
-
ssl_protocols参数:指定支持地ssl协议版本,SSLv2不安全,建议使用TLS,默认使用地是TLS
语法:
-
ssl_session_cache参数:指明ssl会话地缓存机制,默认为none
none:通知客户端支持ssl session cache,但实际不支持
builtin[:size]:使用OpenSSL内建缓存,为每个worker进程私有
[shared:name:size]:在各worker之间使用一个共享的缓存
语法:
-
ssl_session_timeout参数:ssl会话超时时长,指ssl会话中缓存条目的有效时长,默认是5m
语法:
ngx_http_gzip_module模块
过滤器,对指定类型的资源压缩传输以节约带宽。
- gzip参数:启用或禁用gzip压缩
语法:
- gzip_comp_level参数:指定压缩比,由低到高为1~9。压缩比越高,效率越慢,默认为1
语法:
- gzip_disable参数:regex是匹配客户端浏览器类型的模式,表示对匹配到的浏览器不执行压缩报文的响应
语法:
- gzip_min_length参数:触发启用压缩功能的响应报文的最小长度
语法:
- gzip_http_version参数:设定启用压缩功能时,压缩协议最小版本,默认是1.1
- gzip_buffers 参数:支持实现压缩功能时缓冲区数量及每个缓存区的大小。默认32 4k 或16 8k
语法:
- gzip_types参数:指明仅对哪些类型的资源执行压缩操作;默认包含有text/html,不用显示指定,否则出错
语法:
ngx_http_fastcgi_module模块
基于此模块实现与php-fpm结合。(php-fpm是针对PHP的进程管理器,它负责管理一个进程池。来处理来自web服务器的请求。php-fpm是内置于PHP的)
- fastcgi_pass参数:指明后端的服务器,address是fpm服务器监听的地址和端口
语法:
- fastcgi_index参数:fastcgi默认的主页文件
语法:
- fastcgi_param参数:设置传递到fpm服务器的参数及其值。可以是文本、变量或组合
语法:
- fastcgi_cache_path参数:定义fastcgi缓存相关的信息。
语法:
path:文件系统路径,用于存储缓存的文件数据
max_size:定义此路径下的多大空间用于存储缓存数据
levels:缓存目录的层级数量,以及每一级的数目数量
keys_zone:内存空间中用于缓存k/v映射关系的空间名称及大小
inactive:非活动时间 - fastcgi_cache:启用缓存功能,存在于哪个zone中,依赖于上个参数配置中的定义
语法:
- fastcgi_cache_key参数:定义用作缓存的key的字符串
语法:
- fastcgi_cache_methods参数:定以客户端哪些请求方法的响应内容会被缓存处理。
语法:
- fastcgi_cache_min_uses参数:指定缓存空间中的缓存项在inactive定义的非活动时间内至少要被访问的次数,低于这个次数的缓存项则被认为不是活动项
语法:
- fastcgi_cache_valid参数:指定不同的响应码各自的缓存时长
语法:
注意:启用缓存功能时,至少应该指定三个参数:fastcgi_cache、fastcgi_cache_key、fastcgi_cache_valid。
TIP:cgi(common gateway interface)与fastcgi
ngx_http_proxy_module模块
主要用于实现反向代理功能。
-
proxy_pass参数:指定代理服务器的协议、地址、URI和端口的一些信息
语法:
注意点:
a.若是proxy_pass参数后面网址信息带有URI,当客户端通过代理服务器访问时,代理服务器的location的URI信息将会被替换为proxy_pass参数所指定的URI信息。如:
b.若是proxy_pass参数后面的网址信息不带有URI,那么就会将代理服务器的location的URI传递给后端的主机。如:
c.如果代理服务器中location定义URI信息时使用了正则表达式匹配机制,则proxy_pass参数后的网址信息不能带有URI。 -
proxy_set_header参数:设定向后端主机发送的请求报文的首部及其值
语法:
field:要更改信息所在的头域
value:更改的值,支持使用文本、变量或者变量的组合 -
proxy_cache_path参数:定义用于缓存的路径和其它相关信息(可参考上面的fastcgi_cache_path)
语法:
-
proxy_cache参数:定义一个共享的内存区域用于缓存。默认此功能是关闭的
语法:
-
proxy_cache_key参数:定义一个字符串用于缓存
语法:
ngx_http_headers_module模块
基于此模块,在给客户端响应的报文中添加首部。
- add_header参数:向响应报文添加自定义首部,并赋值
语法:
- expires参数:用于定义Expire或Cache-Control首部的值
语法:
ngx_http_upstream_module模块
基于此模块实现Nginx负载均衡:定义服务器组,将多个后端主机定义为服务器组,而后可由proxy_pass、fastcgi_pass、memcached_pass等调用
案例:
-
upstream参数:定义后端服务器组。
语法:
-
server参数:定义后端服务器的地址和相关参数
语法:
相关参数:
weight:服务器调度权重,权重越大,被分配到的任务也就越多
max_fails:指定最大失败连接服务器的次数;若是超过这个次数依然连接不上要连接的服务器,就会暂时放弃连接此服务器,把请求发给其它的web服务器
fail_timeout:定义失败后重发的间隔时间,即多长时间后再向之前多次连接不上的web服务器发出连接请求
backup:指定热备份服务器。只有当所有web服务器都宕机了,热备服务器才会工作
down:标记某个web服务器永久的不可用 -
ip_hash参数:指定调度算法;把客户端的请求依据客户端IP分发给各个web服务器。当出现反复登录问题的时候,就需要使用此参数
语法:
-
least_conn参数:指定调度算法;把请求依据连接数,发送给连接数最少的服务器。
语法:
最后
以上就是机灵香烟为你收集整理的Nginx服务常用的几个模块(增补)的全部内容,希望文章能够帮你解决Nginx服务常用的几个模块(增补)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复