实战Nginx(3)-访问控制与用户认证模块及nginx内置状态页介绍

一.访问控制模块详解

Nginx的访问控制模块是ngx_http_access_module,实际上deny和allow指令属于ngx_http_access_module.我们想控制某个uri或者一个路径不让人访问,就需要依赖此模块.

1.模块安装:

编译安装nginx时不需要指定访问控制模块参数,这个模块已经内置在了nginx中,除非你安装中使用了--without-http_access_module。

2.模块指令:

允许:allow
语法:
Syntax:allow address | CIDR | unix: | all;
默认值:
Default:—
配置段:
Context:http, server, location, limit_except

允许某个ip或者一个ip段访问.如果指定unix:,那将允许socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。

禁止:deny
语法:
Syntax:deny address | CIDR | unix: | all;
默认值:
Default:—
配置段:
Context:http, server, location, limit_except

禁止某个ip或者一个ip段访问.如果指定unix:,那将禁止socket的访问.注意同上。

3.官网实例:

location / {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}

解释:

从上到下的顺序,类似iptables。匹配到了便跳出。如上的例子先禁止了192.168.1.1,接下来允许了3个网段,其中包含了一个ipv6,最后未匹配的IP全部禁止访问.

二.用户认证模块详解

nginxd的用户认证模块是ngx_http_auth_basic_module,我们需要使用用户认证模块来控制用户访问特定页面.

1.模块安装

编译安装nginx时不需要指定访问控制模块参数,这个模块已经内置在了nginx中。

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

3.官网实例:

location / {
    auth_basic           "closed site";
    auth_basic_user_file conf/htpasswd;
}

解释:

采用基本认证模块,认证名称是closed site,认证文件存放在是nginx配置文件路径下的conf/htpasswd。

三.对nginx的内置状态页的访问进行访问控制和用户认证。

1.nginx内置状态页介绍

nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助。

2.启用nginx status配置并只允许172.16.0.0/16的网段访问

在虚拟主机里面加上location或者你希望能访问到的主机里面。

[[email protected] ~]# vim /etc/nginx/extra/nginx-vhost.conf 
server {
        listen   *:80 default_server;
        server_name www.stu31.com;
        index index.html index.htm ;
        root  /www/vhosts/www1;
        access_log  /var/log/nginx/www.stu31.com.log main ;
        location /status {
                stub_status on;
                allow 172.16.0.0/16;
                deny all;
        }
}

2..重启nginx

语法检查:

[[email protected] ~]# service nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启nginx

[[email protected] ~]# service nginx restart
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]

3.访问status页面:

[[email protected] ~]# curl http://172.16.31.40/status
Active connections: 1 
server accepts handled requests
 6 6 5 
Reading: 0 Writing: 1 Waiting: 0

4.nginx status详解

active connections – 活跃的连接数量
server accepts handled requests — 总共处理了6个连接 , 成功创建6次握手, 总共处理了5个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

5.虚拟开启用户认证

[[email protected] ~]# vim /etc/nginx/extra/nginx-vhost.conf 
server {
        listen   *:80 default_server;
        server_name www.stu31.com;
        index index.html index.htm ;
        root  /www/vhosts/www1;
        access_log  /var/log/nginx/www.stu31.com.log main ;
        location /status {
                stub_status on;
                auth_basic "Nginx-status";
                auth_basic_user_file /etc/nginx/.htpasswd;
                allow 172.16.0.0/16;
                deny all;
        }
}

6.创建用户认证文件

[[email protected] ~]# htpasswd -c -m /etc/nginx/.htpasswd status
New password: 
Re-type new password: 
Adding password for user status
[[email protected] ~]# ll -a /etc/nginx/.htpasswd 
-rw-r--r-- 1 root root 45 Dec 27 12:33 /etc/nginx/.htpasswd

7.重启nginx服务

[[email protected] ~]# service nginx restart

8.输入用户名密码访问nginx状态页:

[[email protected] ~]# curl -u status:status http://172.16.31.40/status
Active connections: 1 
server accepts handled requests
 4 4 4 
Reading: 0 Writing: 1 Waiting: 0

访问成功。

至此,nginx的访问控制模块与用户认证模块及开启nginx内置状态页面的知识就介绍完毕了!

时间: 2024-11-18 10:30:59

实战Nginx(3)-访问控制与用户认证模块及nginx内置状态页介绍的相关文章

重新开发Jumpserver用户认证模块,调用独立认证接口(一)

一.概述 Jumpserver用的是python的django框架开发,所以主要完成两个事情: 1.开发自己的认证后台 一个认证后台就是要实现如下两个方法的类: get_user(id) 和 authenticate(**credentials) . 方法 get_user 返回一个 User 对象,参数 id 可以是用户名或者数据库ID.  方法authenticate(**credentials)可以使用密码.token或者已有的认证接口实现身份认证,返回User对象.如果你的认证后台的Us

Django之auth模块用户认证模块

一.Auth模块 1)auth模块是什么.登录后台使用的账号密码,则就是使用的auth模块创建的表 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统. 此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点.它内置了强大的用户认证系统--auth, 它默认使用 auth_user 表来存储用户数据. 2)auth模块的功能

auth用户认证模块

auth模块 用auth模块 就一定要用它本身提供的一些查询,检索,修改,校验的方法 自带的admin管理后台中创建管理员用户,普通用户 (tools菜单中的run manager.py选项下输入) 如何创建超级用户 用于登录django admin的后台管理 createsuperuser createuser #普通用户 auth基本使用语法 (views.py中) from django.contrib import auth from django.contrib.auth.models

BAT-把当前用户以管理员权限运行(用户帐户控制:用于内置管理员帐户的管理员批准模式)

相关资料: http://jingyan.baidu.com/article/72ee561a5dc24fe16138df95.html 网友求助:联想Y400,Win8系统 怎样获得管理员身份 要求详解. 分享经验:Windows 8.1 操作系统获取权限,和什么品牌机无关! 电脑人人有 提示:自己的电脑为什么没有足够的权限?这是微软的操作系统,照顾电脑新手的缘故,虽然每次操作都要咨询一遍,显得很麻烦,但安全的原因,操作系统还不至于轻易被不良程序击毁!一旦掌握自我防范的技巧,那就可以将这些警示

nginx 实现基于basic用户认证机制

实现基于用户的访问控制,使用basic机制进行用户认证 1,在配置文件添加如下几行配置 相关模块ngx_http_access_module server { listen 80; root /nginx/html/; location /admin/ { auth_basic "admin Area"; auth_basic_user_file /etc/nginx/.ngxpasswd; allow 192.168.68.7; deny all; } } "注意:在/ng

Nginx安装配置实现用户认证、反向代理、隐藏版本号

一.Nginx安装 1.检查并且安装依赖组件           检查安装nginx的模块需要第三方库的支持,检查是否安装下列库:zlib.zlib-devel.openssl.openssl-devel.pcre.pcre-devel如果没有,则全部装上          # rpm -qa | grep pcre  ##没有任何信息则没安装 2.安装pcre,pcre-devel # tar -zxvf pcre-6.6.9.tar.gz          # cd pcre-6.6.9/ 

重新开发Jumpserver用户认证模块,调用独立认证接口(二)

一.urls.py # --*--coding:utf-8--*-- from django.conf.urls import patterns, url urlpatterns = patterns('myauth.login', url(r'^login/$', 'do_login', name='login'), url(r'^logout/$', 'do_logout', name='logout'), ) 二.myauth_backend.py Jms_Users 是继承Django的

Nginx 常见设置之用户认证

以上界面,如果管理员设置密码过于简单其他人试出来,就太不安全了,所以在些基础上我们可以加一层用户认证. 更新配置之前备份配置文件. [[email protected] vhosts]# cd /usr/local/nginx/conf/vhosts # vim linux.conf server { listen 80; server_name www.linux.com; index index.html index.htm index.php; root /data/dis; } loca

python2.0_day18_Django自带的用户认证模块的使用

用户验证我们基于一个项目来学习利用Django框架中的user表实现用户认证Django练习小项目:学员管理系统设计开发 项目需求: 1.分讲师\学员\课程顾问角色, 2.学员可以属于多个班级,学员成绩按课程分别统计 3.每个班级至少包含一个或多个讲师 4.一个学员要有状态转化的过程 ,比如未报名前,报名后,毕业老学员 5.客户要有咨询纪录, 后续的定期跟踪纪录也要保存 6.每个学员的所有上课出勤情况\学习成绩都要保存 7.学校可以有分校区,默认每个校区的员工只能查看和管理自己校区的学员 8.客