nginx基本模块

autoindex 目录索引,将资源作为目录提供下载
charset utf8;设置字符集
autoindex on;
autoindex_exact_size off;关闭显示字节,显示准确的文件大小
autoindex_localtime on;开启时间同步
autoindex_format html;显示的格式为html,可以设置为 xml | json | jsonp
mkdir /code/{centos,ubuntu}创建两个子目录

基于ip实现访问控制
allow 10.0.0.1/32;按条件依次向下查询
deny all;403错误
基于用户名密码实现访问控制
yum install httpd-tools -y
htpasswd -bc /etc/nginx/auth_conf oldxu 123形成密文密码
auth_basic “Oldxu Site”;描述信息谷歌浏览器不显示
auth_basic_user_file /etc/nginx/auth_conf;401错误

请求限制
limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;写在server上面
limit_req zone=req_one burst=5 nodelay;超过5个请求就会被限制,503错误
连接限制,下载数量限制
limit_conn_zone $binary_remote_addr zone=addr:10m;写在server上面
limit_conn addr 1;一个ip只允许建立一次连接,报503错误
limit_conn_status 504;设置状态码为504
速度限制
limit_rate 100k;
limit_rate_after 200m;

error_page 504 @error_504;
location @error_504 {与上面重定向的一致
#default_type text/html;指定类型不能少
#return 200 “请充值会员”;状态码和指令相关,返回一段话
#return 302 https://www.waitsun.com/xpay-html;#跳转到其他页面
}
error_page 404 /err.html;写在root /code下面生效,返回其他路径中的资源
location = /err.html {
root /opt;
}

location uri 添加 / 和不添加的区别?
首先: 用户请求uri.oldxu.com/test, 默认情况下返回/code/test/index.html
其次: 如果/code/test有index.html则返回, 如果没有则继续尝试
最后: 尝试再次请求/code/test文件,有则返回文件的内容, 没有则返回404错误

location /test {
	root /code;
	index index.html;
}

首先: 用户请求uri.oldxu.com/test, 默认情况下返回/code/test/index.html
其次: 如果/code/test有index.html则直接返回404

location /test/ {
	root /code;
}

定义一个站点中的日志
server {
access_log /var/log/nginx/vhost站点名字_name.log main;访问日志
error_log /var/log/nginx/vhost站点名字_name_error.log;错误日志
}
日志中的变量信息
$remote_addr # 记录客户端IP地址 user --> web
$remote_user # 记录客户端用户名
$time_local # 记录通用的本地时间
$time_iso8601 # 记录ISO8601标准格式下的本地时间
$request # 记录请求的方法以及请求的http协议
$status # 记录请求状态码(用于定位错误信息)
$body_bytes_sent # 发送给客户端的资源字节数,不包括响应头的大小
$bytes_sent # 发送给客户端的总字节数
$msec # 日志写入时间。单位为秒,精度是毫秒。
$http_referer # 记录从哪个页面链接访问过来的
$http_user_agent # 记录客户端浏览器相关信息
$http_x_forwarded_for #记录客户端IP地址
$request_length # 请求的长度(包括请求行, 请求头和请求正文)。
$request_time # 请求花费的时间,单位为秒,精度毫秒
#注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客 户端真实的IP地址。
# $remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,
# 增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址。
少图标信息不在日志里显示错误
location = /favicon.ico {
return 200;
access_log off;
}

匹配符 匹配规则 优先级
= 精确匹配 1
^~ 以某个字符串开头 2^比$优先
~ 区分大小写的正则匹配 3
~* 不区分大小写的正则匹配 4
/ 通用匹配,任何请求都会匹配到 5
实例

server {
			listen 80;
			server_name location.oldxu.com;

		location = / {
			default_type text/html;
			return 200 'location = /';
		}

		location / {
			default_type text/html;
			return 200 'location /';
		}

		location /documents/ {
			default_type text/html;
			return 200 'location /documents/';
		}

		location ^~ /images/ {
			default_type text/html;
			return 200 'location ^~ /images/';
		}

		location ~* \.(gif|jpg|jpeg)$ {
			default_type text/html;
			return 200 'location ~* \.(gif|jpg|jpeg)';
		}
	}	
			
		
		
		
	#测试结果如下(建议是curl测试)
	#1.请求 http://location.oldxu.com/                    会被  location =/         匹配
	#2.请求 http://location.oldxu.com/index.html          会被  location /          匹配
	#3.请求 http://location.oldxu.com/documents/1.html    会被  location /documents/    匹配
	#4.请求 http://location.oldxu.com/images/1.gif        会被  location ^~ /images/    匹配
	#5.请求 http://location.oldxu.com/documents/1.jpg     会被  location ~* \.(gif|jpg|jpeg)$匹配	
#状态监控模块
location = /nginx_status {
	stub_status;

Active connections 当前活跃连接数,包括Waiting等待连接数。
accepts 已接收的总TCP连接数量。
handled 已处理的TCP连接数量。
requests 当前总http请求数量。

Reading 当前读取的请求头数量。
Writing 当前响应的请求头数量。
Waiting 当前等待请求的空闲客户端连接数。

发布了35 篇原创文章 · 获赞 0 · 访问量 982

猜你喜欢

转载自blog.csdn.net/weixin_45446068/article/details/103412584