Nginx深入了解-基础(四)

Nginx的访问控制。有两种方式可以来进行webserver的访问控制:一种是基于IP的访问控制-http_access_module;另一种是基于用户的信任登录-http_auth_basic_module.

  • http_access_module

Syntax:allow address|CIDR|unix:|all;// ip地址|网段|socket方式|允许所有
Default:–
Context:http,server,location,limit_except


相对应的deny方式

Syntax:deny address|CIDR|unix:|all;
Default:–
Context:http,server,location,limit_except

server {
    ...
    location / {
        ...
        deny 127.0.0.1;
        allow all;
    }
    location ~ ^/admin {
        ...
        allow 127.0.0.1;
        deny all;
    }
}

http_access_module是有局限性的,当客户端使用cdn代理时,nginx读取客户端的ip是通过remote_addr来识别的,识别到的ip此时是cdn代理的ip,而不是客户端真实的ip.

方式一:可以使用http_x_forwarded_for解决。

方式二:结合geo模块
方式三:通过http自定义变量传递

  • http_auth_basic_module

Syntax:auth_basic string|off;
Default:auth_basic off;
Context:http,server,location,limit_except


官方文档:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

Syntax:auth_basic_user_file file;// 使用文件密码信息
Default:–
Context:http,server,location,limit_except

按照官网可以使用htpasswd方式生成对应的文件:

[[email protected] nginx]$ sudo htpasswd -c ./auth_conf mantis

[[email protected] nginx]$ more ./auth_conf
mantis:$apr1$dnrF/7bE$gaMkEYvWB2KYmaG0cQcoS0

配置

server {
    ...
    location ~ ^/admin {
        ...
        auth_basic "Auth access deny!";
        auth_basic_user_file /etc/nginx/auth_conf;
        ...
    }
}

局限性:

一,用户信息依赖文件
二,操作管理机械,效率低下

解决方式:

一,使用Lua实现验证
二,Nginx和LDAP打通,利用nginx-auth-ldap模块


  转载请注明: Mantis Nginx深入了解-基础(四)

 上一篇
Nginx深入了解-进阶(一) Nginx深入了解-进阶(一)
Nginx用来作为静态资源web服务;CDN、浏览器缓存、跨域、防盗链等。 非服务器动态运行生成的文件。 类型 种类 浏览器端渲染 HTML、CSS、JS 图片 JPG、GIF、JPEG、PNG 视频 FLV、M
2018-07-23 Mantis
下一篇 
Nginx深入了解-基础(三) Nginx深入了解-基础(三)
nginx有很多模块配置,包括官方模块和第三方模块。 http_stub_status_modules配置 Syntax:stub_statusDefault:–Context:server,location 例如: serve
2018-07-19 Mantis