Nginx服务常用的几个模块(增补)

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参数:指定调度算法;把请求依据连接数,发送给连接数最少的服务器。
    语法:
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值