Nginx|Nginx 手记(四)---访问控制

【Nginx|Nginx 手记(四)---访问控制】Nginx的访问控制

  • 基于IP的访问控制:http_access_module
  • 基于用户的信任登陆:http_auth_basic_module
一、http_access_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_x_forwarded_for:所有ip地址,包括:客户端ip地址以及所有的代理ip地址
http_access_module模块则是使用了remote_addr实现访问控制,如果客户端使用了代理进行访问,那么不能准确的获取到客户端ip,而不能准确对其进行控制。
二、http_auth_basic_module 用户登陆认证模块
#用户认证配置 #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 文件,进行测试。

    推荐阅读