- Nginx目录浏览功能
- 关闭虚拟主机的默认首页功能
- index index.html;
- 自动的展示root所定义的目录下所有文件内容
- Nginx状态信息功能
- location匹配
- location在nginx.conf的写法
- root关键词 ,定义网页根目录的,这个html是以nginx安装的路径为相对
- index关键词 ,定义nginx的首页文件名字,默认找到哪个文件
- 最低级匹配,不符合其他location就来这
- 案例:192.168.47.160:83/asljfklsajdf
- 优先级最高,精准匹配
- 案例:192.168.47.160:83/
- 以/blog/开头的url,来这里,如符合其他location,则其他优先
- 案例:192.168.47.160:83/blog/hehe.txt
- 匹配任何以/img/开头的请求,不匹配正则
- 案例:192.168.47.160:83/img/xxx
- 匹配任何以.gif结尾的请求,支持正则,任何url,只要结尾符合就来到这
- 案例:192.168.47.160:83/xxx.gif
- URL重写
- 准备一个虚拟主机的配置文件,实现用户访问该虚拟主机,直接跳转到百度页面
- 认证模块(页面加密)
- 语法
- 解释
- nginx会去这个文件中验证账号密码
- 密码文件的对应目录生成密码文件
Nginx目录浏览功能
- 类似于此形式,就是一种nginx目录展示的功能

修改nginx.conf配置
server { listen 80; sever_name learn_nginx_cc.com;
access_log logs/learn_nginx_cc.log charset utf-8 location / { root /www/learn_nginx;关闭虚拟主机的默认首页功能
index index.html;
自动的展示root所定义的目录下所有文件内容
autoindex on; } }
-
Nginx状态信息功能
nginx提供了status模块,用于检测nginx的请求连接信息,这个功能需要在编译安装的时候,添加 —with-http-stud-status_module 参数,才能使用
nginx -V #检查当前nginx是否支持status功能
确定支持status功能,我们可以添加一个conf配置文件,用于检查状态页的功能 确保nginx.conf主配置文件,支持include语法
include extra/*.conf; #将当前的extra目录下所有的conf文件,都识别为nginx的配置文件
创建status.conf
touch /opt/tbnginx233/conf/extra/status.conf
修改status.conf 开启状态页功能,添加如下信息
vim /opt/tbnginx233/conf/extra/status.conf
server { listen 85; location / { stub_status on; #开启状态页功能 access_log off; #关闭访客日志功能 } }
检查nginx配置,重启nginx
nginx -t nginx -s reload
显示信息解析
Active connections:1
server accepts handled requests requset_time
3 3 5 0
Reading:0 Writing:1 Waiting:0
Active connections : 显示正在处理的活动的连接数
server :nginx启动后一共处理的请求数
accepts handled :nginx启动后创建的握手数
requests :表示nginx一共处理了多少次的请求
requset_time :
Reading :nginx读取到客户端的headers数量
Writing :nginx响应给客户端的headers数量
Waiting :nginx处理完毕请求之后,等待下次的请求驻留的连接数
Waiting = Active - ( Reading + Writing )
压力测试
安装ab命令
yum install httpd-tools -y
使用ab命令对nginx发送大量的连接
-n 请求数量 -c 请求并发数 -k 表示启动keepalived保持连接功能 ab -kc 1000 -n 100000 http://127.0.0.1/
location匹配
nginx的location作用,是根据用户访问的url,进行不同的处理方式
针对用户请求的网站url进行匹配处理,然后进行对应的处理
location在nginx.conf的写法
location / {
root关键词 ,定义网页根目录的,这个html是以nginx安装的路径为相对
root html;
index关键词 ,定义nginx的首页文件名字,默认找到哪个文件
index index.html index.htm; }
location相关语法
语法:
location [ = | ~ | * | ^ ] url {
#做出的相应处理动作
}
| 匹配符 | 匹配规则 | 优先级 |
|---|---|---|
| = | 精准匹配 | 1 |
| ^~ | 以某个字符开头,不做正则处理 | 2 |
| ~* | 支持正则的匹配模式 | 3 |
| /blog/ | 匹配对应目录 | 4 |
| / | 通用匹配,不符合其他location匹配规则的,就走到这里 | 5 |
案例
server { listen 83; servername ;
最低级匹配,不符合其他location就来这
案例:192.168.47.160:83/asljfklsajdf
location / { return 401; }
优先级最高,精准匹配
案例:192.168.47.160:83/
location = / { return 402; }
以/blog/开头的url,来这里,如符合其他location,则其他优先
案例:192.168.47.160:83/blog/hehe.txt
location /blog/ { return 403; }
匹配任何以/img/开头的请求,不匹配正则
案例:192.168.47.160:83/img/xxx
location ^~ /img/ { return 404; }
匹配任何以.gif结尾的请求,支持正则,任何url,只要结尾符合就来到这
案例:192.168.47.160:83/xxx.gif
location ~* .(gif|jpg|jpeg)$ { return 500; } }
URL重写
nginx的url地址重写功能,主要是使用nginx提供的rewrite功能,且支持正则表达式
rewrite能够实现url的跳转,实现url规范化,根据请求的变量实现url跳转等等,基于url重写功能常见的效果如下
- 对于爬虫程序的封禁,让其跳转到一个错误的页面
- 动态的url,伪装成静态的html页面,便于搜索引擎的抓取
- 新旧域名的更新,替换
rewrite语法
语法:
rewrit ^/(.*) http://192.168.47.130/$1 parmanent;解释: rewrite 是nginx地址重写的关键词指令,开启跳转功能 正则 ^/(.*) 表示匹配所有的请求,匹配成功后,跳转到后面指定的url地址 $1 是取出前面正则表达式分组括号里的内容 parmanent 表示301重定向的标记
rewrite的参数标记如下
- Last 规则匹配完成后,继续向下匹配新的location
- break 本条规则匹配完成后,立即停止匹配动作
- Redirct 返回302临时重定向状态码,浏览器地址栏显示跳转后的url,爬虫不会更新该url
- Permanent 返回301永久重定向,浏览器地址也显示跳转后的url,爬虫更新该网站url
last和break用于实现url重写,浏览器的地址栏不会发生变化
redirct和permanent也用于url跳转,浏览器url地址栏发生变化,跳转到新的url地址栏
实现一个301 URL跳转
准备一个虚拟主机的配置文件,实现用户访问该虚拟主机,直接跳转到百度页面
vim /extra/learn_rewrite.conf
server { listen 90; servername ; location / { rewrite ^/(.*) http://www.baidu.com/$1 permanent } }
认证模块(页面加密)
语法:
location / {
auth_basic ‘string’;
auth_basic_user_file conf/htpasswd;
}
linux提供了密码生成命令
htpasswd是apache提供的密码生成工具,nginx也支持auth_basic模块,因此我们可以利用htpasswd命令生成账号密码,提供给nginx去使用yum install httpd-tools -y
语法
htpasswd -bc .access username password
解释
-b 在命令行中输入 账号密码 -c 创建密码文件 username 账号 password 密码
默认 .access文件采用加密方式md5来验证
