nginx模块

#Nginx模块
1.目录索引
目录索引模块
Module ngx_http_autoindex_module
Nginx默认不允许列出整个目录浏览下载
location / {
autoindex on;
}

	Syntax:	autoindex on | off;
	Default:	
	autoindex off;
	Context:	http, server, location
	#	autoindex常用参数
	autoindex_exact_size on;
	默认为on,显示的文件的确切大小,单位是bytes。
	修改为off,显示的文件的大概大小,单位是kb或者mb或者GB。
	autoindex_localtime on | off;
	默认为off,显示的文件时间为GMT时间
	修改为on,显示的文件时间为文件的服务器时间
	charset utf-8,gbk;
	默认中文目录乱码,添加上解决乱码
	例子:
		location /images {
			root /usr/local/www/htdocs;
			autoindex on;
			charset utf-8;
			autoindex_exact_size off;
			autoindex_localtime on;
		}
Nginx监控模块
ngx_http_stub_status_module
	stub_statis;
	location /nginx {
		stub_status;	
	}

Active connections: 2 
server accepts handled requests
 170 170 157 
Reading: 0 Writing: 1 Waiting: 1 
Active connections 当前活动的连接数
accepts 当前的总连接数TCP
handled 当前成功的连接数TCP	
requests 总的http请求数
注意:
	1)如果使用restart重置访问,会清空所有的连接数
	2)reload重载不会清空之前的连接数
	3)通过状态监控,可以验证区分长连接和短连接
	vim nginx.conf
		keepalive_timeout 0;讲长连接变为短连接


nginx访问控制
	1.Nginx基于IP的访问控制 ngx_http_access_module
		允许配置语法
		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

		访问控制规则查看流程:
			从上往下,依次匹配,满足就停止
		企业中反问控制的思路:
			先写允许,默认拒绝所有
				allow 125.120.226.74;
				deny all;
			先写拒绝,默认允许所有
				

	2.基于用户登录认证 ngx_http_auth_basic_module
		//配置语法
		Syntax:	auth_basic string | off;
		Default:	
		auth_basic off;
		Context:	http, server, location, limit_except
		//用户密码记录配置文件
		Syntax:	auth_basic_user_file file;
		Default:	—
		Context:	http, server, location, limit_except
		//需要安装依赖组件
		yum install httpd-tools
		htpasswd -b -c /etc/nginx/auth_conf xu 123456
		配置文件书写:
		auth_basic "请输入账户密码!";
		auth_basic_user_file /etc/nginx/.auth_conf;
Nginx访问限制
	经常会遇到这种情况,服务器流量异常,负载过大等等。对于大流量恶意的攻击访问,会带来带宽的浪费,服务器压力,影响业务,往往考虑对同一个ip的连接数,并发数进行限制。
	ngx_http_limit_conn_module 模块可以根据定义的key来限制每个键值的连接数,如同一个ip来源的连接数。
	limit_conn_module 连接频率限制
	limit_req_module 请求频率限制
 	http请求建立在一次TCP连接基础上,一次TCP连接至少产生一次HTTP请求。
Nginx连接限制配置实战:
	1)Nginx连接限制语法
		Syntax:	limit_conn_zone key zone=name:size;
		Default:	—
		Context:	http
		
		Syntax:	limit_conn zone number;
		Default:	—
		Context:	http, server, location
	示例:
		limit_conn_zone $binary_remote_addr zone=addr:10m;
		server {
		    location /download/ {
		        limit_conn addr 1;
		    }
	变量:$binary_remote_addr 变量的长度是固定的4字节
		 $remote_addr        变量的长度是7-15字节
	一个ip地址=32bit=4字节 
	2)Nginx请求限制语法
		Syntax:	limit_req_zone key zone=name:size rate=rate [sync];
		Default:	—
		Context:	http

		Syntax:	limit_req zone=name [burst=number] [nodelay | delay=number];
		Default:	—
		Context:	http, server, location
		示例:
		limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
		limit_req zone=perip; 
压力测试:
	ab -n 50 -c(并发) 20 访问链接
	ab -n 50 -c 20 http://127.0.0.1/index.html


日志模块:
	可以在不同的server中写入不同的log文件用来保存日志文件。
	Nginx有非常灵活的日志记录模式。每个级别的配置都可以由各自独立的访问日志。日志格式通过log_format命令定义格式。
	使用log_format自定义日志格式
	Nginx预定义了名为combined日志格式,如果没有明确指定日志格式默认使用该格式:
	log_format combined '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';

	85.119.151.252 - - [16/Apr/2020:14:58:21 +0800] "POST http://check.best-proxies.ru/azenv.php?s=158702030011382PC201849796308080 HTTP/1.1" 404 153 "https://best-proxies.ru/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0" "-"

	变量	含义
	$bytes_sent	发送给客户端的总字节数
	$body_bytes_sent	发送给客户端的字节数,不包括响应头的大小
	$connection	连接序列号
	$connection_requests	当前通过连接发出的请求数量
	$msec	日志写入时间,单位为秒,精度是毫秒
	$pipe	如果请求是通过http流水线发送,则其值为"p",否则为“."
	$request_length	请求长度(包括请求行,请求头和请求体)
	$request_time	请求处理时长,单位为秒,精度为毫秒,从读入客户端的第一个字节开始,直到把最后一个字符发送张客户端进行日志写入为止
	$status	响应状态码
	$time_iso8601	标准格式的本地时间,形如“2017-05-24T18:31:27+08:00”
	$time_local	通用日志格式下的本地时间,如"24/May/2017:18:31:27 +0800"
	$http_referer	请求的referer地址。
	$http_user_agent	客户端浏览器信息。
	$remote_addr	客户端IP
	#$http_x_forwarded_for	当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置。
	$request	完整的原始请求行,如 "GET / HTTP/1.1"
	$remote_user	客户端用户名称,针对启用了用户认证的请求
	$request_uri	完整的请求地址,如 "https://daojia.com/"
Nginx虚拟主机(站点)
	所谓虚拟主机,及在一台服务器上配置多个网站 
	实现虚拟主机方式:
		基于ip
			不同ip
		基于端口
			相同的ip,不同的端口
		基于域名
			相同的ip,系统的端口,不同的域名
	示例1基于IP的虚拟主机
		1)创建目录
			创建不同的目录
		2)创建对应的配置文件
			vim /etc/nginx/conf.d/www.conf
			server{
			listen 120.121.120.12:80;
			server_name
			location / {
				root	/usr/local/www
				}
			}
			server{
			listen 120.121.120.13:80;
			server_name
			location / {
				root	/usr/local/www1
				}
			}
	基于端口的:
		vim /etc/nginx/conf.d/www.conf
			server{
			listen 80;
			server_name www.test1.com;
			location / {
				root	/usr/local/www
				}
			}
			server{
			listen 81;
			server_name www.test2.com;
			location / {
				root	/usr/local/www1
				}
			}
	hosts解析:
		120.79.213.171 www.test.com www.test1.com
		http://www.test.com:82/
		http://www.test1.com:81/
Nginx Location	
	使用Nginx Location可以控制访问网站的路径,但一个server可以有多个location配置,多个location的优先级该如何区分。
	1.location语法示例
		location [=|~|~*|^~] /uri/ { … }
		
		location匹配优先级
		符号
		符号   匹配规则   			优先级
		=      精确匹配  				1
		^~     以某个字符串开头     		2
#		~      区分大小写的正则匹配		3 	
#		~*     不缺乏大小写的正则匹配		4
		!~     区分大小写不匹配的正则		5
		!~*	   不区分大小写不匹配的正则	6
#		/ 	   通用匹配,如何请求都会匹配到	7 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值