Day 50 Nginx 常用模块

Day 50 Nginx 常用模块

1.1 Nginx目录索引

    当用户访问 http://game.oldboy.com/ 直接访问我们的游戏

    当用户访问 http://game.oldboy.com/centos 跳转到我们centos的目录

1.1.1 如果开启了目录的索引

    上传的文件,只看该文件的修改时间。

    如果本地创建,则和服务器时间进行保持。

1.1.2 具体的例子

    autoindex on;

    开启目录索引

    autoindex_exact_size off;

    默认为on 显示出文件的确切大小,单位是bytes

    修改为off,显示出文件的大概大小,单位是kB或者MB或者GB

    autoindex_localtime on;

    默认为off,显示的文件时间为GMT时间。

    修改为on 显示的文件时间为文件的服务器时间。

    charset utf-8,gbk;

    默认中文目录乱码,添加上解决乱码。

[root@web01 centos]# cat /etc/nginx/conf.d/oldboy_game.conf

server {

    listen 80;

    server_name game.oldboy.com;

    charset utf-8,gbk;

 

    location / {

       root /oldboy_code;

       index index.html;

    }

 

    location /centos {

       autoindex on;

       autoindex_localtime on;

       autoindex_exact_size off;

       root /oldboy_code;

    }

}

 

1.2 Nginx状态监控

    当前的活跃连接

    TCP连接数

    HTTP请求数

Active connections: 2

server accepts handled requests

 4 4 61

Reading: 0 Writing: 1 Waiting: 1

 

Active connections    # 当前活动的连接数

accepts   4           # 当前的总连接数TCP

handled   4           # 成功的连接数TCP

requests 61           # 总的http请求数

一次TCP的连接,可以发起多次http的请求(长连接状态)

 

keepalive_timeout  0;   # 类似于关闭长连接

keepalive_timeout  65;  # 65s没有活动则断开连接

    location /nginx_status {

       stub_status;

    }

 

1.3 Nginx访问控制

1.3.1 基于IP地址

    //允许配置语法

    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

    1.访问控制配置示例, 拒绝指定的IP, 其他全部允许

       deny 10.0.0.1/32;

       allow all;

 

    2.访问控制配置示例, 只允许谁能访问, 其它全部拒绝

        allow 127.0.0.1;

        deny all;

 

1.3.2 基于用户密码

//配置语法

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

 

1.安装hhtpd-tools,需要使用到htpaaswd这个命令生成密码

[root@web01 conf.d]# yum install httpd-tools -y

[root@web01 conf.d]# htpasswd -b -c /etc/nginx/auth_conf bgx xuliangwei

2.加入需要做认证的location模块

    auth_basic "Gun Dan!!!!";

    auth_basic_user_file /etc/nginx/auth_conf;

3.参考fj.xuliangwei.com

location / {

    root /code;                                 # 指定网站代码存放的位置

    autoindex on;                                                # 开启目录索引

    autoindex_localtime on;                                   # 开启本地服务器的时间

    autoindex_exact_size off;                                # 以人性化方式显示文件大小

    access_log off;                                              # 关闭访问日志

    auth_basic "Permission denied";                      # 基础认证的描述信息

    auth_basic_user_file /etc/nginx/auth_conf; # 基础认证密码文件位置(验证)

}

1.4 Nginx访问限制

    基于TCP连接数限制(不准)

    基于http请求数限制 1s 30http

HTTP请求建立在一次TCP连接基础上,一次TCP连接至少产生一次HTTP请求(还可以产生多次)

//Nginx连接限制语法

Syntax:  limit_conn_zone key zone=name:size;

Default: —

Context: http

Syntax: limit_conn zone number;

Default: —

Context: http, server, location

 

#1.定义连接限制

http{

limit_conn_zone $binary_remote_addr zone=conn_kt:10M;

}

 

#2.调用连接的限制

server {

    limit_conn_zone conn_kt 1;

}

# 3.注意是否开启了长连接,因为开启长连接可能后面的刷新都是http的请求

 

//Nginx请求限制语法

Syntax:  limit_req_zone key zone=name:size rate=rate;

Default: —

Context: http

Syntax: limit_conn zone number [burst=number] [nodelay];

Default: —

Context: http, server, location

//具体配置如下:

http {

//http段配置请求限制, rate限制速率,限制一秒钟最多一个IP请求

limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;

    ...

    server {

    ... 

 

        location / {

        //1r/s只接收一个请求,其余请求拒绝处理并返回错误码给客户端

            limit_req zone=req_zone;

        //请求超过1r/s,剩下的将被延迟处理,请求数超过burst定义的数量, 多余的请求返回503

            #limit_req zone=req_zone burst=3 nodelay;

        }

 

连接限制没有请求限制有效?

    我们前面说过, 多个请求可以建立在一次的TCP连接之上, 那么我们对请求的精度限制,当然比对一个连接的限制会更加的有效。

    因为同一时刻只允许一个连接请求进入。

    但是同一时刻多个请求可以通过一个连接进入。

    所以请求限制才是比较优的解决方案。

1.4.1 nginx常用模块

    目录索引 autoindex

    状态监控 stub_status

    访问控制

        access/deny     #基于来源IP验证

        auth_basic      # 基于用户密码验证

    例子

        目录索引配置用户密码认证

        状态模块配置来源IP验证

    访问限制

        limit_conn_zone     #连接限制

        limit_req_zone      #请求限制


猜你喜欢

转载自blog.51cto.com/13859649/2176670