Nginx虚拟主机
虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,从网站访问者来看,每一台虚拟主机和一*立的主机完全一样。利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。
Nginx配置虚拟主机有三种方式。
1.基于多ip的方式
2.基于多端口的方式
3.基于多域名的方式
注意域名需要解析才能起作用。
Nginx日志
日志的作用
1.记录网站的状态
2.查看网站的访问来源
3.网站排错
日志常用变量
$remote_addr :客户端ip地址
$remote_user :客户端用户名
time_local :访问的本地时间
$request :请求的类型和请求的http协议
$status :请求的状态码
$body_bytes_sent :发送给客户端的资源字节数
$http_referer :访问的域名
$http_user_agent :浏览器的相关信息
$http_x_forwarded_for :真实的客户端ip
Nginx访问控制模块
ngx_http_access_module模块
作用:ngx_http_access_module模块的作用是允许或拒绝某些IP访问
语法:
允许访问:allow [address/all]
拒绝访问:deny [address/all]
语法顺序由上到下,满足上一条便不再往下匹配
配置环境:http, server, location, limit_except
案例:允许192.168.15.0这个网段访问,不允许其他网段访问。
ngx_http_auth_basic_module模块
作用:设置登录信息
语法:
登录信息:auth_basic [string/off]
指定登录用户名密码文件:auth_basic_user_file [file]
注意指定的密码文件需要提前生成。
配置环境:http, server, location, limit_except
案例:为网站添加登录验证
1.生成网站的登录用户名密码文件
生成文件需要httpd-tools,如果没有需要提前安装yum install httpd-tools
2.设置Nginx配置
3.重启Nginx
4.登录测试
ngx_http_autoindex_module模块
作用:处理以斜杠字符( / )结尾的请求,并生成目录列表。
语法:
生成目录列表:autoindex [on/off]
格式化文件大小:autoindex_exact_size [on/off]
指定是否以本地时区显示时间:autoindex_localtime [on/off]
设置目录列表的格式:autoindex_format [html/xml/json/jsonp]
配置环境:http, server, location
案例:显示Nginx目录下的文件
1.设置配置文件
2.重启Nginx并测试
Nginx状态监控模块
ngx_http_stub_status_module模块
作用:监控Nginx的运行状态
语法:
显示基本状态信息:stub_status
配置环境:server, location
状态信息:
Active connections:当前活动客户端连接数
accepts:接受的客户端连接总数
handled:处理的连接总数
requests:客户端的请求数
Reading:nginx 正在读取请求的连接数
Writing:nginx 将已写回客户端的连接数
Waiting:正在等待的客户端连接数
案例:监控Nginx的信息
1.设置配置文件
2.重启Nginx并测试
访问链接控制模块
ngx_http_limit_req_module
作用:设置共享内存区域和请求的最大突发大小。以定义的速率处理请求,过多的请求会被延迟,直到它们的数量超过最大突发大小,在这种情况下,请求会因错误而终止 。
语法:
limit_req_zone $remote_addr zone=one:10m rate=1r/s
limit_req_zone :声明连接池
$remote_addr :变量
zone :连接池名称
10m :连接池大小
rate :限定速率
注意链接池需提前定义以防冲突
burst:允许的突发请求
配置环境:http, server, location
案例:控制Nginx的访问量为1秒一次,允许的突发请求数为5
1.设置配置文件
2.测试访问量
为比较直观看到测试的结果,需要使用ab命令,需安装httpd-tools
ab命令参数:
-n:总共访问多少次
-c:每次访问多少个
3.测试结果
时间是5s,成功的次数只有6次,差不多符合要求。
ngx_http_limit_conn_module模块
作用:控制Nginx的链接数
语法:
limit_conn_zone $remote_addr zone=addr:10m
limit_req_zone :声明连接池
$remote_addr :变量
zone :连接池名称
10m :连接池大小
limit_conn addr 1:限制最大连接数为1
配置环境:http, server, location
案例:限制每个ip只能访问1次
1.设置配置文件
2.重启Nginx并测试