nginx访问控制
一、访问控制
1、安装模块
这个模块内置在了nginx中,除非你安装中使用了--without-http_access_module。如果你还没安装过nginx。
2、指令
1、安装模块
这个模块内置在了nginx中,除非你安装中使用了--without-http_access_module。如果你还没安装过nginx。
2、指令
allow
语法: allow address | CIDR | unix: | all;
默认值: —
配置段: http, server, location, limit_except
允许某个ip或者一个ip段访问.如果指定unix:,那将允许socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。
语法: allow address | CIDR | unix: | all;
默认值: —
配置段: http, server, location, limit_except
允许某个ip或者一个ip段访问.如果指定unix:,那将允许socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。
deny
语法: deny address | CIDR | unix: | all;
默认值: —
配置段: http, server, location, limit_except
3. allow、deny实例
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.16.1.1,接下来允许了3个网段,其中包含了一个ipv6,最后未匹配的IP全部禁止访问. 在实际生产环境中,我们也会使用nginx的geo模块配合使用。
4. 结束语
nginx访问控制模块要数nginx里面最简单的指令,只要记住你想禁止谁访问就deny后边加上IP,想允许则加上allow后边加上ip,想禁止或者允许所有,那么allow all或者deny all即可.
二、限制用户
1.ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容。web上的一些内容不想被其他人知道,但是又想让部分人看到。
2.语法
nginx basic auth指令
语法: auth_basic string | off;
默认值: auth_basic off;
配置段: http, server, location, limit_except
默认表示不开启认证,后面如果跟上字符,这些字符会在弹窗中显示。
语法: auth_basic_user_file file;
默认值: —
配置段: http, server, location, limit_except
3.密码文件
用户密码文件,文件内容类似如下:
ttlsauser1:password1
ttlsauser2:password2:comment
4.nginx认证配置实例
server{
server_name www.ttlsa.com ttlsa.com;
index index.html index.<a href="http://www.ttlsa.com/php/" title="php"target="_blank">php</a>;
root /data/site/www.ttlsa.com;
location /
{
auth_basic "nginx basic http test for ttlsa.com";
auth_basic_user_file conf/htpasswd;
autoindex on;
}
}
备注:一定要注意auth_basic_user_file路径,否则会不厌其烦的出现403。
5.生成密码
可以使用htpasswd,或者使用openssl
# printf "ttlsa:$(openssl passwd -crypt 123456)\n" >>conf/htpasswd