设为首页 收藏本站
查看: 1030|回复: 0

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

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-29 09:17:22 | 显示全部楼层 |阅读模式
一.访问控制模块详解
Nginx的访问控制模块是ngx_http_access_module,实际上deny和allow指令属于ngx_http_access_module.我们想控制某个uri或者一个路径不让人访问,就需要依赖此模块.
1.模块安装:
编译安装nginx时不需要指定访问控制模块参数,这个模块已经内置在了nginx中,除非你安装中使用了--without-http_access_module。

2.模块指令:
1
2
3
4
5
6
7
允许:allow
语法:
Syntax:allow address | CIDR | unix: | all;
默认值:
Default:—
配置段:
Context:http, server, location, limit_except



允许某个ip或者一个ip段访问.如果指定unix:,那将允许socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。
1
2
3
4
5
6
7
禁止:deny
语法:
Syntax:deny address | CIDR | unix: | all;
默认值:
Default:—
配置段:
Context:http, server, location, limit_except



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

3.官网实例:
1
2
3
4
5
6
7
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.模块指令:
1
2
3
4
5
6
7
认证协议:
语法:
Syntax:auth_basic string | off;
默认值:
Default:auth_basic off;
配置段:
Context:http, server, location, limit_except



1
2
3
4
5
6
7
认证文件:
语法:
Syntax:auth_basic_user_file file;
默认值:
Default:—
配置段:
Context:http, server, location, limit_except




3.官网实例:
1
2
3
4
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或者你希望能访问到的主机里面。
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@www ~]# 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
语法检查:
1
2
3
[iyunv@www ~]# 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
1
2
3
4
5
[iyunv@www ~]# 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页面:
1
2
3
4
5
[iyunv@www ~]# 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详解
1
2
3
4
5
active connections – 活跃的连接数量
server accepts handled requests — 总共处理了6个连接 , 成功创建6次握手, 总共处理了5个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.




5.虚拟开启用户认证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[iyunv@www ~]# 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.创建用户认证文件
1
2
3
4
5
6
[iyunv@www ~]# htpasswd -c -m /etc/nginx/.htpasswd status
New password:
Re-type new password:
Adding password for user status
[iyunv@www ~]# ll -a /etc/nginx/.htpasswd
-rw-r--r-- 1 root root 45 Dec 27 12:33 /etc/nginx/.htpasswd



7.重启nginx服务
1
[iyunv@www ~]# service nginx restart




8.输入用户名密码访问nginx状态页:
1
2
3
4
5
[iyunv@www ~]# 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内置状态页面的知识就介绍完毕了!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-39525-1-1.html 上篇帖子: 实战Nginx(2)-日志模块 下篇帖子: 实战Nginx(4)-压缩模块与http首部响应报文模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表