一.Nginx基于授权的访问控制概述
- Nginx与Apache一样,可以实现基于用户权限的访问控制,当客户端想要访问相应的网站或者目录时,要求用户输入用户名和密码,才能正常访问
- 配置步骤生成用户密码认证文件 ;修改主配置文件相对应的目录,添加认证配置项;重启服务,访问测试
二.Nginx基于授权的访问控制操作
- 安装nginx
- 获得安装包
yum install vsftpd -y //安装ftp服务
systemctl start vsftpd //开启ftp服务
wget http://nginx.org/download/nginx-1.17.6.tar.gz //使用wget工具从官网上下载nginx压缩包
- 解压,安装环境
tar zxvf nginx-1.17.6.tar.gz
yum install gcc gcc-c++ pcre* zlib-devel make -y
- 创建用户,不建立宿主文件,且不能再shell上登录
useradd -M -s /sbin/nologin nginx
- 配置,安装且编译
cd nginx-1.17.6/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
#nigix运行的用户和组都为nginx
#启用http_stub_status_module模块以支持状态统计,便于查看服务器的连接信息
make && make install
- 建立执行程序的软链接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
- 优化nginx服务控制
vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: -99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx" //nginx主程序
PIDF="/usr/local/nginx/logs/nginx.pid" //nginx的PID号
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
#添加执行权限
chmod +x /etc/init.d/nginx
#添加为系统服务
chkconfig --add nginx
- 关闭防火墙,开启服务
service nginx start
systemctl stop firewalld
setenforce 0
- 验证Ningx服务
- 使用htpasswd生成用户认证文件
#安装htpasswd工具
yum install httpd-tools -y
#创建用户
htpasswd -c /usr/local/nginx/passwd.db stu
#修改密码权限文件
chmod 400 /usr/local/nginx/passwd.db
#修改所有者为chown nginx /usr/local/nginx/passwd.db
#查看密码文件
[root@192 ~]# cat /usr/local/nginx/passwd.db
stu:$apr1$0FAY6w6o$DNF5ARlGMq4mTJByjFfNL/
- 修改主配置文件,添加相应的认证配置项
#进入主配置文件
vim /usr/local/nginx/conf/nginx.conf
location / {
auth_basic "secret"; //添加认证配置
auth_basic_user_file /usr/local/nginx/passwd.db;
root html;
index index.html index.htm;
}
- 重启服务
service nginx restart
- 验证基于授权的访问控制
三.Nginx基于客户端的访问控制概述
- 基于客户端的访问控制是通过客户端的IP地址,决定是否允许对页面访问
- Nginx基于客户端的访问控制要比Apache简单
规则如下:
- deny IP/IP段:拒绝某个IP或者网段的客户端访问
- allowIP/IP段:允许某个IP或者网段的客户端访问
- 规则从上往下执行,如匹配则停止,不再往下匹配
四.Nginx基于客户端的访问控的实际操作
- 修改主配置文件
[root@192 ~]# vim /usr/local/nginx/conf/nginx.con
location / {
# auth_basic "secret";
# auth_basic_user_file /usr/local/nginx/passwd.db;
deny 192.168.43.140; //禁止43.140访问
allow all;
root html;
index index.html index.htm;
}
- 重启服务
service nginx restart
- 测试