nginx的访问控制
一、基于Basic Auth认证与基于IP的访问控制
一、基于Basic Auth认证
Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要输入正确的用户名和密码之后才能正确的访问网站。
1、安装httpd-tools,用htpasswd来生成密码信息
首先要安装httpd-tools,在httpd-tools中包含了htpasswd命令。
yum install -y httpd-tools
2、创建一个用户,然后基于这个用户通过htpasswd命令生成用户名及对应密码数据库文件
#创建用户 useradd webuser #创建密码管理目录 mkdir -p /etc/nginx/auth/ #创建密码 # htpasswd -c /etc/nginx/auth/passwd.db webuser //创建认证信息,webuser 为认证用户名 New password: ******* //输入认证密码 web@user Re-type new password: ******** //再次输入认证密码 web@user Adding password for user webuser #修改网站认证数据库权限 chmod 755 /etc/nginx/auth/passwd.db #修改网站认证数据库属主和属组 chown root:root /etc/nginx/auth/passwd.db #查看通过htpasswd生成的密码为加密格式 #cat /etc/nginx/auth/passwd.db wyl:r5IXRXWSmlBk6
2、编辑nginx的配置文件
server { listen 80; server_name localhost; client_max_body_size 151m; location / { auth_basic "s1"; #虚拟主机认证命名 auth_basic_user_file /etc/nginx/auth/passwd.db; #虚拟主机用户名密码认证数据库 proxy_pass http://10.0.0.10:8088; #访问 } }
3、重启nginx
nginx -s reload
4、访问测试
需要输入密码和账号,输入正确的用户名和密码之后,才可以访问相应的内容。
二、基于IP的访问控制
通过IP进行访问控制基于nginx模块ngx_http_access_module
1、模块安装
nginx中内置ngx_http_access_module,除非编译安装时指定了–without-http_access_module
2、指令
1、allow
语法: allow address | CIDR | unix: | all;
默认值: -
配置段: http, server, location, limit_except
允许某个ip或者一个ip段访问。如果指定unix:,那将允许socket的访问。
2、deny
语法:deny address | CIDR | unix: | all;
默认值: -
配置段: http, server, location, limit_except
禁止某个ip或者一个ip段访问.如果指定unix:,那将禁止socket的访问
3、示例
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全部禁止访问。
被deny的将返回403状态码。