Nginx|Nginx 手记(四)---访问控制
【Nginx|Nginx 手记(四)---访问控制】Nginx的访问控制
- 基于IP的访问控制:http_access_module
- 基于用户的信任登陆:http_auth_basic_module
#允许:允许指定的ip 或ip网段 或unix上的socket访问 或所有
语法:allow address|CIDR|unix:|all
默认值:无
上下文:http,server,location,limit_except#禁止:禁止指定...
语法:deny address|CIDR|unix:|all
默认值:无
上下文:http,server,location,limit_except
用例:
server {
listen80;
server_namelocalhost;
#charset koi8-r;
#access_log/var/log/nginx/host.access.logmain;
location / {
root/opt/site/sam;
indexindex.html index.htm;
}#~模式匹配 以/admin.html开头的访问
#location ~ ^/admin.html {
#root /opt/site/sam;
#deny 113.111.48.118;
#禁止该ip访问
#allow all;
#允许其他所有访问
#index index.html index.htm;
#}#~模式匹配 以/admin.html开头的访问
location ~ ^/admin.html {
root /opt/site/sam;
allow 113.111.48.0/24;
#允许该ip段访问 113.111.48.0 到 113.111.48.24
deny all;
#禁止其他所有访问
index index.html index.htm;
}#error_page404/404.html;
# redirect server error pages to the static page /50x.html
#
error_page500 502 503 504/50x.html;
location = /50x.html {
root/usr/share/nginx/html;
}}
检测下配置语法:
[root@sam ~]# nginx -tc /etc/nginx/nginx.conf
重新加载配置:
[root@sam ~]# nginx -s reload -c /etc/nginx/nginx.conf
局限性:
remote_addr:获取上一级的ip地址,可能是客户端的ip地址,也可能是上一级代理的ip地址二、http_auth_basic_module 用户登陆认证模块
http_x_forwarded_for:所有ip地址,包括:客户端ip地址以及所有的代理ip地址
http_access_module模块则是使用了remote_addr实现访问控制,如果客户端使用了代理进行访问,那么不能准确的获取到客户端ip,而不能准确对其进行控制。
#用户认证配置
#string:登陆提示
语法:auth_basic string|off;
默认值:auth_basic off;
#默认关闭
上下文:http,server,location,limit_except#配置 存储用户授权信息(账号密码)的文件路径
语法:auth_basic_user_file file;
默认值:无
上下文:http,server,location,limit_except
- 新建密码文件(使用htpasswd)
使用htpasswd生成密码文件
#新建一个密码文件(指定文件名为/etc/nginx/auth_conf),用户名为sam,并设置密码。
[root@sam ~]# htpasswd -c /etc/nginx/auth_conf sam
New password:
Re-type new password:
Adding password for user sam
如果没有htpasswd工具,安装httpd-tools 即可:
[root@sam ~]# yum install httpd-tools -y
- server中配置
server {
listen80;
server_namelocalhost;
#charset koi8-r;
#access_log/var/log/nginx/host.access.logmain;
location / {
root/opt/site/playSports;
indexindex.html index.htm;
}#匹配以/admin.html开头的访问
location ~ ^/admin.html {
root/opt/site/sam;
auth_basic "Auth access test!input your password!";
#登陆提示语
auth_basic_user_file /etc/nginx/auth_conf;
#密码文件路径
indexindex.html index.htm;
}#error_page404/404.html;
# redirect server error pages to the static page /50x.html
#
error_page500 502 503 504/50x.html;
location = /50x.html {
root/usr/share/nginx/html;
}
}
浏览器访问:http://你的ip/admin.html ,进入登陆验证。
注意:需要在项目目录下新建 admin.html 文件,进行测试。
推荐阅读
- 跌跌撞撞奔向你|跌跌撞撞奔向你 第四章(你补英语,我补物理)
- 奔向你的城市
- 四首关于旅行记忆的外文歌曲
- CET4听力微技能一
- 亲子日记第186篇,2018、7、26、星期四、晴
- 特种兵训练第四天
- 第四十三篇接纳孩子的感受
- 《自我的追寻》读书笔记3
- 不让记忆、感觉、情绪成为孩子的负累|不让记忆、感觉、情绪成为孩子的负累|《全脑教养法》(四)
- 亲子日记第三百四十二篇|亲子日记第三百四十二篇 暴雨