nginx模块解析

nginx模块可分为  “官方模块 ”和 '第三方模块“。


命令nginx -V可查看nginx的编译参数,--with开头的参数就是指编译的模块部分。下面介绍部分模块及其配置:


1.--with-http_stub_status_module    

作用:展现nginx客户端状态

配置语法:      Syntax:stub_status;

                      Default:----

                      Context:server,location

看语法得知,此模块是配置在server或location下,如:

        location  /mystatus{

                 stub_status;

        }

配置完后记得检查语法是否正确:    nginx -tc  /etc/nginx/nginx.conf

若正确则重载该服务:   nginx  -s reload -c  /etc/nginx/nginx.conf       或  systemctl  reload nginx

完成后即可在浏览器中输入 127.0.0.1/mystatus来查看nginx客户端状态:


active  connections 表示nginx当前活跃连接数

server accepts handled requests

           xxx  xxx  xxxx        (第一个表示nginx接收的握手的次数,第二个表示nginx处理的连接数,第三个表示总的请求数。正常情况第一个数等于第二个数,即没有丢失连接)

Reading: x(正在读的个数)    Writing:  x(正在往nginx写的个数)   Waiting:  x(nginx在开启keepalive时,客户端和服务端之间正在空闲等待的连接数)



2.--with-http_random_index_module        

  作用:目录中选择一个随机主页,用户每次进入看到的可能都是不同的主页

配置语法:     Syntax:random_index  on|off;

                        Default:random_index  off;

                        Context:location

例子:               location  /{

                                root   /usr/share/nginx/html       默认    (实际生产环境则改成自定义的存放若干主页html的目录)

                                random_index  on;

                                .....................

                        }

注意:隐藏的html文件无法被选择



3.--with-http_sub_module                   

 作用:Http内容替换

配置语法有多个,这里列出常用的几个:      

(1)Syntax:sub_filter  string  replacement;         string是被替换的内容(html代码)      replacement是替换内容(html代码)

    Default:——

   Context:http,server,location

(2)

 Syntax:sub_filter_last_modified  on|off;         last_modified是响应头信息的一部分,主要应用于缓存,显示http响应内容上次修改的时间

     Default:sub_filter_last_modified  off

          Context:http,server,location

(3)Syntax:sub_filter_once on|off;                      on则只匹配替换内容的第一个,off则匹配所有

         Default::sub_filter_once on

         Context:http,server,location



4.请求限制模块

可通过下面两个模块任一个实现:

TCP连接频率限制-limit_conn_module

                     配置语法:        

                          Syntax:limit_conn_zone   key      zone=name:size     

                          Default:----- limit_conn_zone是操作系统中保存连接状态的空间       key是限制条件(比如客户端IP)

 Context:http   name是空间的名字,size是分配的空间大小

  

  Syntax:limit_conn zone  number                  zone指空间的名字 ,number是同一时间允许的连接个数

                          Default:-----

   Context:http,server,location

 

Http请求频率限制-limit_req_module

          配置语法:

  Syntax:limit_req_zone  key zone=name:size  rate=x r/s;       rate即key指定的客户端的限制请求频率r/s

                        Default:-----

             Context:http


   Syntax:limit_req zone=name [burst=number]  [nodelay]             burst表示rate在超过x时,遗留number个在下一秒执行(延迟响应)     nodelay(其余的不延迟)

                         Default:-----

        Context:http,server,location

配置示例如下图:

http下


server   location下





5.访问控制模块

5.1基于IP的访问控制-http_access_module                   

作用:允许或拒绝某些IP访问

配置语法:    

   Syntax:allow address | CIDR | unix:|all;

                        Default:-----

                  Context:http,server,location,limit_except

 

 

 Syntax:deny address | CIDR | unix:|all;

                         Default:-----

                  Context:http,server,location,limit_except

配置示例:                 location  ~ ^/XXX.html  { 

root  自定义存放页面的目录

deny   234.12.122.34;               拒绝此IP访问以XXX.html为后缀的域名,会报403错误

allow  all;  其他IP可以

index  index.html   index.htm;

}

局限性:假如客户端不是直接与服务端连接,而是中间还隔着代理的话,那么访问控制将无效,因为客户端是先访问代理,代理再访问服务端,而http_access_module 是基于变量remote_addr来识别客户端IP的,但是remote_addr存储的不是客户端的IP而是代理的IP,因此访问控制无效。那么有什么方法呢?

(1)采用别的Http头信息控制访问,如:http_x_forwarded_for


x_forwarded_for变量是http头信息中的一个变量,它记录的内容=ClientIP+Proxy(1)IP+Proxy(2)IP.................


(2)结合geo模块



(3)通过Http自定义变量进行传递



5.2基于用户的信任登录-http_auth_basic_module             

 作用:提供登录认证界面控制用户访问

   配置语法:       Syntax: auth_basic string | off;string是认证界面显示的提示信息

  Default: auth_basic  off;

  Context: http,server,location,limit_except


  

  Syntax: auth_basic_user_file    file;                     file是一个存储用户名、密码信息的文件路径

  Default: -------

  Context: http,server,location,limit_except

这方法有其局限性:需要把用户信息存到一个文件里,效率低下,且不好管理因为有着多套用户名密码。
















  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值