Nginx目录浏览功能

  • 类似于此形式,就是一种nginx目录展示的功能

image.png

  1. 修改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; } }

  2. 还得检查虚拟主机目录下,不要存在index.html文件

    Nginx状态信息功能

    nginx提供了status模块,用于检测nginx的请求连接信息,这个功能需要在编译安装的时候,添加 —with-http-stud-status_module 参数,才能使用
    nginx -V #检查当前nginx是否支持status功能
    确定支持status功能,我们可以添加一个conf配置文件,用于检查状态页的功能

  3. 确保nginx.conf主配置文件,支持include语法

    include extra/*.conf; #将当前的extra目录下所有的conf文件,都识别为nginx的配置文件

  4. 创建status.conf

    touch /opt/tbnginx233/conf/extra/status.conf

  5. 修改status.conf 开启状态页功能,添加如下信息

    vim /opt/tbnginx233/conf/extra/status.conf

    server { listen 85; location / { stub_status on; #开启状态页功能 access_log off; #关闭访客日志功能 } }

  6. 检查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 )

压力测试

  1. 安装ab命令

    yum install httpd-tools -y

  2. 使用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来验证

案例

  1. 准备文件

    server { listen 84; servername ; location / { root html/www; index index.html; auth_basic “learn nginx auth_module”;

    nginx会去这个文件中验证账号密码

    auth_basic_user_file /opt/tbnginx233/conf/extra/htpasswd; } }

  2. 生成密码文件

    密码文件的对应目录生成密码文件

    htpasswd -bc ./htpasswd chaoge 666