08 上 nginx模块
LNMP架构是什么?
LNMP是一套技术的组合,L=Linux、N=Nginx、M~=MySQL、P~=PHP
1、目录索引模块
1.开启目录索引
语法: autoindex on | off;
默认: autoindex off;
位置: http, server, location
2.格式化文件大小
语法: autoindex_exact_size on | off;
默认: autoindex_exact_size on;
位置: http, server, location
3.输出的格式
语法: autoindex_format html | xml | json | jsonp;
默认: autoindex_format html;
位置: http, server, location
4.使用时区
语法: autoindex_localtime on | off;
默认: autoindex_localtime off;
位置: http, server, location
2、访问限制模块
allow: 允许IP访问
deny: 禁止IP访问
语法: allow address | CIDR | unix: | all;
默认: —
位置: http, server, location, limit_except
语法: deny address | CIDR | unix: | all;
默认: —
位置: http, server, location, limit_except
备注:
address :ip地址
CIDR : 网段
unix: socket文件
all : 所有
案例1:只允许192.168.15.1来访问
案例2:只允许192.168.15.0来访问。
allow 192.168.15.0/24;
deny all;
案例3:要求禁止192.168.15.1来访问。
deny 192.168.15.1;
allow all;
3、认证模块
1.需要先安装httpd-tools(安装此软件可使用htpasswd命令)
yum install httpd-tools -y
2.语法
语法: auth_basic string | off; #如果跟string,就代表开启。
默认: auth_basic off;
位置: http, server, location, limit_except
语法: auth_basic_user_file file;
默认: —
位置: http, server, location, limit_except
3.配置密码文件
htpasswd -c /etc/nginx/auth dzg
4.配置server
auth_basic "This is auth_basic!";
auth_basic_user_file /etc/nginx/auth;
5.重启nginx并测试
nginx -t
systemctl restart nginx
6.在命令行中的访问方式
curl -H'Host: index.test.com' http://dzg:123456@192.168.15.8
4、nginx状态模块
1.语法
语法: stub_status;
默认: —
位置: server, location
2.使用
location /status {
stub_status;
}
3.重启nginx并测试
http://index.test.com/status
Active connections:当前活动客户端连接数,包括等待连接。
accepts :总的连接次数
handled:已经处理的总连接数
requests:客户端请求的总数
Reading:nginx正在读取请求头的当前连接数
Writing:nginx将响应写回客户端的当前连接数
Waiting:当前等待请求的空闲客户端连接数
5、限制连接数模块
ngx_http_limit_conn_module
创建一个内存空间存放访问者的IP
设置每一个访问者的同时连接次数
1.语法
#设置限制的空间
Syntax: limit_conn_zone key zone=name:size;
Default: —
Context: http
limit_conn_zone #设置空间的模块
key #指定空间存储的内容
zone #指定空间
=name #空间名字
:size; #空间的大小
#调用限制的空间
Syntax: limit_conn zone number;
Default: —
Context: http, server, location
limit_conn #调用空间的模块
zone #空间的名字
number; #指定可以同时连接的次数
2.使用
vim /etc/nginx/conf.d/game1.conf
# 创建一个叫linux的空间,主要用来存放客户端IP,大小是10M
limit_conn_zone $remote_addr zone=linux:10m;
server{
server_name game1.test.com;
listen 80;
location / {
# 调用linux空间,限制连接数是1
limit_conn linux 1;
root /usr/share/nginx/html5-mario;
index index.html;
}
}
3.重启nginx
systemctl restart nginx
4.配置hosts文件
vim /etc/hosts
#192.168.15.8 game1.test.com
5.测试
ab -c 200 -n 10000 http://game1.test.com/
6、限制请求数模块
创建一个内存空间存放访问者的IP
设置每一个访问者的同时请求次数
1.语法
#设置空间的语法
Syntax: limit_req_zone key zone=name:size rate=rate [sync];
Default: —
Context: http
limit_req_zone #设置空间的模块
key #空间存储的内容
zone #指定空间
=name #空间的名字
:size #空间的大小
rate=rate [sync]; #读写速率
#调用的语法
Syntax: limit_req zone=name [burst=number] [nodelay | delay=number];
Default: —
Context: http, server, location
limit_req #调用控件模块
zone=name #指定空间=空间的名字
[burst=number] #允许多请求几次
[nodelay | delay=number]; #延时
2.使用
vim /etc/nginx/conf.d/game1.conf
# 创建一个叫linux的空间,主要用来存放客户端IP,大小是10M
limit_conn_zone $remote_addr zone=linux:10m;
# 每秒一次
limit_req_zone $remote_addr zone=python:10m rate=1r/s;
server{
server_name game1.test.com;
listen 80;
location / {
# 调用linux空间,限制连接数是1
limit_conn linux 1;
#每秒最多5此
limit_req zone=python burst=5;
root /usr/share/nginx/html5-mario;
index index.html;
}
}
3.重启nginx并测试
知识储备:
ab : 创建请求的命令,(yum install httpd-tools -y )
-c : 设置并发
-n : 设置请求的总数