nginx內建模块使用
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重新加载nginx
nginx -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内容替换
配置:
- Syntax: sub_filter string replacement;
主要用于替换字符串
Default: -;
Context: http,server,location- Syntax: sub_filter_last_modified on|off;
校验服务端的内容是否有变更,有就返回最新内容,主要用于缓存
Default: sub_filter_last_modified off;
Context: http,server,location- 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
作用:连接频率限制
配置:
- Syntax: limit_conn_zone key zone=name:size
存储连接状态,key存储键值,name唯一标识,size存储大小
Default: -;
Context: http- 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
作用:请求频率限制
配置:
- Syntax: limit_req_zone key zone=name:size rate=rate;
存储请求状态,key存储键值,name唯一标识,size存储大小,rate请求速率限制(条/s)
Default: -;
Context: http- 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地址的客户端访问
配置:
- Syntax: allow address|CIDR|unix:|all;
address:IP地址 CIDR:网段 unix:主要用于socket消息 all:允许所有的
Default: -;
Context: http,server,location,limit_except- 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
作用:基本身份验证
配置:
- 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
样例:
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內建模块使用的更多相关文章
- python內建模块之datetime
from:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193755 ...
- Python 的內建模块
>>> import __builtin__>>> dir(__builtin__)['ArithmeticError', 'AssertionError', 'A ...
- python快速学习-常用內建模块
- python学习(十五) 内建模块学习
介绍python的几个內建模块,原文链接 1 python的时间模块datetime 取现在时间 from datetime import datetime now = datetime.now() ...
- Nginx SPDY Pagespeed模块编译——加速网站载入
在看<Web性能权威指南>的时候,看到了SPDY这货,于是便开始折腾起了这个了,也顺便把pagespeed加了进去. Nginx SPDY 引自百科~~ SPDY(读作“SPeeDY”)是 ...
- Python3 内建模块 hashlib、itertools、HTMLParser、urllib
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...
- nginx源代码分析--模块分类
ngx-modules Nginx 基本的模块大致能够分为四类: handler – 协同完毕client请求的处理.产生响应数据.比方模块, ngx_http_rewrite_module, ngx ...
- Nginx开发HTTP模块入门
Nginx开发HTTP模块入门 我们以一个最简单的Hello World模块为例,学习Nginx的模块编写.假设我们的模块在nginx配置文件中的指令名称为hello_world,那我们就可以在ngi ...
- Python学习进程(8)字符串內建函数
Python字符串內建函数实现了string模块的大部分方法,并包括了对Unicode编码方式的支持. (1)capitalize(): 将字符串的第一个字母变成大写,其他字母变小写. ...
随机推荐
- 【原创】Oracle 11g R2 Client安装配置说明(多图详解)
1. 准备工作 安装Oracle11gR2client的时候,如果刚从网上下载的Oracle client,可能无法再2008 R2或者2012 R2的服务器上面运行. 报错:[INS-13001]环 ...
- 洛谷 P1181 数列分段Section I【贪心/最少分成多少合法的连续若干段】
题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 输入文件divide_ ...
- 洛谷—— P1869 愚蠢的组合数
https://www.luogu.org/problemnew/show/1869 题目描述 最近老师教了狗狗怎么算组合数,狗狗又想到了一个问题... 狗狗定义C(N,K)表示从N个元素中不重复地选 ...
- oracle数据迁移之Exp和Expdp导出数据的性能对比与优化
https://wangbinbin0326.github.io/2017/03/31/oracle%E6%95%B0%E6%8D%AE%E8%BF%81%E7%A7%BB%E4%B9%8BExp%E ...
- 微信小程序开发,上传wx.uploadFile 返回参数处理
这真的是个坑,前端看了半天,说是字符串,让后台处理,后台说返回的是正确的,原来这个请求就是返回的string类型,见下图,无法取到code,需要前台自己转化. 以下为百度出来的参考: wx.reque ...
- Git从入门到速成
什么是Git Git是Linux发明者Linus开发的一款新时代的版本控制系统,那什么是版本控制系统呢?怎么理解?网上一大堆详细的介绍,但是大多枯燥乏味,对于新手也很难理解,这里我只举几个例子. 熟悉 ...
- win10安装nodejs
https://jingyan.baidu.com/article/b0b63dbfca599a4a483070a5.html 1 去官网下载对应版本的msi文件 2安装,path会自动设置 3 检验 ...
- Visio文件转EPS文件
Visio转eps by gaihf@水木 看了前人写的关于Visio转EPS的文章,但是实践过程中还是碰到几个棘手的问题.现在这些问题终于解决了,把自己的一点体会分享给大家. 很多人习惯用Visio ...
- JComboBox添加item的赋值类型问题!不一致的话会导致不能更改jcombobox的选择值
在用swing做页面的时候,往往需要设置字体样式,那么,如何用一种方法设置字体之后,在后面的其他页面就不需要再次设置字体了呢? 下面这个方法就可以解决了: JComboBox在对它进行添加子项的时候, ...
- HTML5游戏实战(1):50行代码实现正面跑酷游戏
前段时间看到一个"熊来了"的HTML5跑酷游戏,它是一个典型的正面2D跑酷游戏,这里借用它来介绍一下用Gamebuilder+CanTK开发正面跑酷游戏的基本方法. CanTK(C ...