Nginx访问控制
标签:Nginx

访问控制

基于IP的访问控制 - http_access_module

基于用户的信任登录 - http_auth_basic_module

1. http_access_module

1.1 语法

允许的:

Syntax: allow address |CIDR|unix:|all
Default:——
Context:http,server,location,limit_except

禁止的:

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

1.2 测试

下面这个是禁止的:

1.3局限性

如果客户端通过代理或者其他方式再去访问服务端的话,服务端收到的ip将不是客户端最开始的ip,这样就起不到限制作用。

1.4 对于局限解决方案

  1. 使用 x_forward_for:它会在头信息上携带客户端和代理的IP,但可以被修改伪装,而且是协议要求,不一定每个都按照这个标准去做。

    http_x_forward_for = Client IP,Proxy(1) IP,Proxy(2) IP,...
    
  2. 可以结合geo模块一起使用

  3. 通过http自定义变量传递

2. http_auth_basic_module

2.1 语法

Syntax: auth_basic string |off;
Default: auth_basic off;
Context:http,sever,location,limit_except
Syntax: auth_basic_user_file file;
Default:——
Context:http,server,location,limit_except;

官方文档:http_auth_basic_module

2.2 测试

Step 1:对于文件验证前面需要安装 htpasswd

yum install -y httpd-tools

Step 2:根据名字生成相应的密钥文件

htpasswd -c ./auth_conf liuyao

查看生成的文件:

[root@localhost nginx]# cat auth_conf 
liuyao:$apr1$1cs7waAy$VwLcFEml4QqloZTAT.bIF0

Step 3:编辑配置文件

location ~ ^/admin.html {
    root   /opt/app;
    auth_basic "Auth access test! Input your password";
    auth_basic_user_file /etc/nginx/auth_conf;
    index  index.html index.htm;
}

  • 2 min read

CONTRIBUTORS


  • 2 min read