nginx內建模块使用

标签(空格分隔): nginx


© 版权声明:本文为博主原创文章,转载请注明出处

本文内容仅为个人理解,不保证完全正确

1. 內建模块的引入

安装nginx,只安装了核心模块,其他非核心模块都没有引入。因此当需要使用某个內建模块时需重新进行配置

1.1 查看安装信息

nginx -V # 查看安装信息,需要nginx配置到环境变量中,或者需要指定路径/home/*/nginx/sbin/nginx -

1.2 重新指定配置信息

假设以添加http_stub_status_module模块为例

  • nginx -V查看以前的配置信息

  • 将新模块的信息追加到后面,然后重新配置。注意是追加不是覆盖。比如原本的配置信息为./configure --prefix=/home/nginx/nginx,那么添加http_stub_status_module后的配置信息为./configure --prefix=/home/nginx/nginx --with-http_stub_status_module

  • 执行make命令,不能执行make install命令,否则会重新安装的

  • 备份sbin目录下的nginx文件mv ngnix ngnix.bak

  • 将解压目录下objs目录下重新生成的nginx文件复制到安装目录的sbin目录下cp /home/nginx/nginx-1.12.2/objs/nginx /home/nginx/nginx/sbin

  • 重新加载nginxnginx -s reload -c /home/nginx/nginx/conf/nginx.conf。有时重新加载nginx不能加载新模块,此时可以用kill关闭nginx,然后重启启动即可

cd /home/nginx/nginx-1.12.2/ # 切换到解压后的nginx目录下

./configure --prefix=/home/nginx/nginx --with-http_stub_status_module # 重新指定配置信息

make # 重新编译

cp /home/nginx/nginx/sbin/nginx /home/nginx/nginx/sbin/nginx.bak # 备份

cp /home/nginx/nginx-1.12.2/objs/nginx /home/nginx/nginx/sbin # 复制

nginx -s reload -c /home/nginx/nginx/conf/nginx.conf # 重新加载nginx

2. 內建模块的使用

2.1 http_stub_status_module

作用:展示nginx的一些状态信息

配置

Syntax: stub_status;

Default: -;

Context: server、location

样例

location /mystatus {

stub_status; # 查看nginx的一些状态信息

}

说明: 配置完成后,重新加载nginx,然后访问根据配置的名称进行访问即可查看nginx的状态信息

访问方式:http://nginx_ip:nginx_port/mystatus

字段说明

Active connections: 2

server accepts handled requests

5 5 23

Reading: 0 Writing: 1 Waiting: 1

其中Active connections:表示活跃的连接数

accepts:表示接收的握手的数量

handled:表示处理的数量。handled和accepts需要相等,表示没有丢失连接

requests:表示总的请求数

Reading:读取客户端的连接数

Writing:响应数据到客户端的数量

Waiting:开启keep-alive的情况下,等于Active connections-(Reading + Writing),表示nginx已经处理完正在等待下一次请求的驻留连接

2.2 http_random_index_module

作用:该模块的作用是随机显示主页

配置

Syntax: random_index on|off;

Default: random_index off;

Context: location

样例

location / {

        #root   html;
#index index.html index.htm;
root /home/nginx/Code; # 主页目录
random_index on; # 在主页目录下随机选择一个主页
}

说明:配置完成后,重新加载nginx,然后多次访问主页,此时nginx会自动从主页目录下随机选择一个html加载,但是不会加载隐藏文件

访问方式:http://nginx_ip:nginx_port/

2.3 http_sub_module

作用:将返回的内容进行HTTP内容替换

配置

  1. Syntax: sub_filter string replacement; 主要用于替换字符串

    Default: -;

    Context: http,server,location
  2. Syntax: sub_filter_last_modified on|off; 校验服务端的内容是否有变更,有就返回最新内容,主要用于缓存

    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

样例

location / {

root /home/nginx/Code;

index index.html;

sub_filter 'imooc' 'IMOOC';

sub_filter_once off;

}

说明:配置完成后,重新加载nginx,然后访问主页,此时会替换主页中所有的imooc为IMOOC

访问方式:http://nginx_ip:nginx_port/

2.4 limit_conn_module

作用:连接频率限制

配置

  1. Syntax: limit_conn_zone key zone=name:size存储连接状态,key存储键值,name唯一标识,size存储大小

    Default: -;

    Context: http
  2. Syntax: limit_conn zone number; zone对应limit_conn_zone中的name,number并发限制数

    Default: -;

    Context: http,server,location

样例

http {

limit_conn_zone $binary_remote_addr zone=conn_zone:1m;

server {

location / {

root /home/nginx/Code;

index index.html;

limit_conn conn_zone 1;

}

}

}

说明:配置完成后,重新加载nginx,然后使用ab进行测试。此时一个ip只能同一时刻只能建立一个连接

2.5 limit_req_module

作用:请求频率限制

配置

  1. Syntax: limit_req_zone key zone=name:size rate=rate; 存储请求状态,key存储键值,name唯一标识,size存储大小,rate请求速率限制(条/s)

    Default: -;

    Context: http
  2. Syntax: limit_req zone=name [burst=number] [nodelay]; name对应limit_req_zone中的name,burst表示延迟请求,number表示个数,即有number个请求会延迟到下一秒处理,nodelay表示剩余的都是立刻处理

    Default: —;

    Context: http,server,location

样例

http {

limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;

server {

location / {

root /home/nginx/Code;

index index.html;

        #limit_req zone=req_zone;
#limit_req zone=req_zone burst=3 nodelay;
limit_req zone=req_zone burst=3;
}
}

}

说明:配置完成后,重新加载nginx,然后使用ab进行压力测试

配置说明

limit_req zone=req_zone; 表明严格按照rate设置的速率处理请求,多余的请求直接舍弃

limit_req zone=req_zone burst=3 nodelay; 表明按照rate设置的速率处理请求,同时设置一个大小为3的缓存队列,当请求到来时可以爆发出一个峰值处理能力,处理缓存中的请求,其他的请求舍弃。

limit_req zone=req_zone burst=3; 表明按照rate设置的速率处理请求,同时设置一个大小为3的缓存队列,在缓存队列中的请求会等待慢慢处理,超过rate处理能力和缓存队列长度的请求直接舍弃。有延迟

参考http://blog.csdn.net/hellow__world/article/details/78658041

2.6 http_access_module

作用:限制某些IP地址的客户端访问

配置

  1. Syntax: allow address|CIDR|unix:|all; address:IP地址 CIDR:网段 unix:主要用于socket消息 all:允许所有的

    Default: -;

    Context: http,server,location,limit_except
  2. Syntax: deny address|CIDR|unix:|all; address:IP地址 CIDR:网段 unix:主要用于socket消息 all:阻止所有的

    Default: -;

    Context: http,server,location,limit_except

样例

location ~ ^/index {

root /home/nginx/Code;

deny 192.168.56.1; # 阻止192.168.56.1的IP访问

allow all; # 允许其他所有的IP访问

index index.html index.htm;

}

location ~ ^/index {

root /home/nginx/Code;

allow 192.168.56.1; # 只允许192.168.56.1的IP访问

deny all; # 阻止其他所有的IP访问

index index.html index.htm;

}

说明:配置完成后,重新加载nginx,使用不同的IP进行访问

局限性:如果是通过代理访问,这样IP控制就会失效。

解决方案

方法一:采用别的HTTP头信息控制访问,如HTTP_X_FORWARD_FOR。(HTTP_X_FORWARD_FOR只是一个规范,可能没有,也可能被修改)

方法二:采用geo模块控制

方法三:通过HTTP自定义变量传递

2.7 http_auth_basic_module

作用:基本身份验证

配置

  1. Syntax: auth_basic string | off # string:验证失败时提示的信息

    Default: auth_basic off;

    Context: http,server,location,limit_except
  2. Syntax: auth_basic_user_file file; # file:验证文件路径

    Default: -;

    Context: http,server,location,limit_except

样例

location / {

root /home/nginx/Code;

index index.html index.htm;

auth_basic "Auth access test!input your password!";

auth_basic_user_file /home/nginx/nginx/conf/conf.d/auth/auth_conf;

}

说明:auth_conf文件使用htpasswd生成,若未安装,可先使用yum -y install httpd-tools进行安装,然后用htpasswd -c ./auth_conf username按提示生成文件,重新加载nginx

局限性:用户信息依赖文件方式、操作管理机械,效率低下

解决方案

方法一:Nginx结合LUA实现高效验证

方法二:Nginx和LDAP打通,利用nginx-auth-ldap模块


更好的MarkDown体验:https://www.zybuluo.com/chy282/note/1042841

nginx內建模块使用的更多相关文章

  1. python內建模块之datetime

    from:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193755 ...

  2. Python 的內建模块

    >>> import __builtin__>>> dir(__builtin__)['ArithmeticError', 'AssertionError', 'A ...

  3. python快速学习-常用內建模块

  4. python学习(十五) 内建模块学习

    介绍python的几个內建模块,原文链接 1 python的时间模块datetime 取现在时间 from datetime import datetime now = datetime.now() ...

  5. Nginx SPDY Pagespeed模块编译——加速网站载入

    在看<Web性能权威指南>的时候,看到了SPDY这货,于是便开始折腾起了这个了,也顺便把pagespeed加了进去. Nginx SPDY 引自百科~~ SPDY(读作“SPeeDY”)是 ...

  6. Python3 内建模块 hashlib、itertools、HTMLParser、urllib

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...

  7. nginx源代码分析--模块分类

    ngx-modules Nginx 基本的模块大致能够分为四类: handler – 协同完毕client请求的处理.产生响应数据.比方模块, ngx_http_rewrite_module, ngx ...

  8. Nginx开发HTTP模块入门

    Nginx开发HTTP模块入门 我们以一个最简单的Hello World模块为例,学习Nginx的模块编写.假设我们的模块在nginx配置文件中的指令名称为hello_world,那我们就可以在ngi ...

  9. Python学习进程(8)字符串內建函数

        Python字符串內建函数实现了string模块的大部分方法,并包括了对Unicode编码方式的支持.     (1)capitalize(): 将字符串的第一个字母变成大写,其他字母变小写. ...

随机推荐

  1. Google C++ 编码规范(中文版)

    Google C++ 编码规范(英文)在线地址:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml 中文版PDF下载:本地下载

  2. Python的支持工具[1] -> 可执行文件生成工具[1] -> cx_freeze

    cx_freeze cx_Freeze 是一个第三方库,可以用于将 Python 的代码打包成可执行文件,下面介绍如何利用一个脚本文件将 Python 代码变为 exe 可执行文件. 首先,需要安装 ...

  3. 在sae中运行web.py应用

    sae 是新浪推出的PaaS业务,可以提供免运维的容器服务,官方网站( https://www.sinacloud.com/ ) 假设您已经在本地开发好了web.py 应用,您可以通过github客户 ...

  4. teamviewer13报错

    用自己的笔记本电脑远程桌面AGV电脑在终端运行teamviewer报错如下: Init...CheckCPU: SSE2 support: yesChecking setup...Launching ...

  5. 【bzoj2839】【集合计数】容斥原理+线性求阶乘逆元小技巧

    (上不了p站我要死了,侵权度娘背锅) Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取 ...

  6. 完全理解Gson(3):Gson反序列化

    完全理解Gson(2):Gson序列化 完全理解Gson(1):简单入门 本文延续前一篇文章,继续介绍简单基本的Gson用法.这篇文章我们将介绍如何将复杂的JSON对象解析为Java对象,其中Java ...

  7. hibernate.cfg.xml配置文件对关联关系的书写技巧!

    以Department(部门类)和User(用户类)作为例子: 类图如下: 一般hibernate.cfg.xml的配置文件开头都是如下: <?xml version="1.0&quo ...

  8. tensorflow BasicRNNCell调试

    运行以下代码,进入~/anaconda3/lib/python3.5/site-packages/tensorflow/python/ops/rnn.py和~/anaconda3/lib/python ...

  9. RSA加密解密及数字签名Java实现

    http://my.oschina.net/jiangli0502/blog/171263

  10. [Tools] Support VS Code Navigation and Autocomplete Based on Webpack Aliases with jsconfig.json

    It's common to setup Webpack aliases to make imports much more convenient, but then you lose the abi ...