详解Nginx两种方式实现访问控制

简介

基于用户的访问控制就是对网页目录进行认证配置,用户输入用户名密码之后才能访问网页
基于IP的访问控制即使可以通过配置基于ip的访问控制,达到让某些ip能够访问,限制哪些ip不能访问的效果

实验环境

  • 系统环境:CentOS7.4
  • 服务器IP地址:192.168.100.71
  • 客户端IP地址:192.168.100.72
  • yum挂载目录:/mnt/sr0
  • 相关源码包下载地址:百度云下载   密码:uhzm

搭建步骤

一、准备工作

1、关闭防火墙及selinux

[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
[root@localhost ~]# systemctl disable firewalld.service #随开机自动关闭

[root@Init5 ~]# vim /etc/sysconfig/selinux
详解Nginx两种方式实现访问控制

[root@localhost ~]# reboot #重启Linux生效

二、搭建Nginx服务

1、安装相应的工具包以及C语言编译器

[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++

2、创建Nginx进程用户

[root@localhost ~]# useradd -M -s /sbin/nologin nginx

3、配置、编译及编译安装Nginx源码包

[root@localhost ~]# tar xvf nginx-1.12.0.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx

参数解析:

prefix #指定安装位置
user=nginx #指定nginx系统用户
group=nginx #指定组

[root@localhost nginx-1.12.0]# make && make install

4、优化路径

[root@localhost ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

三、设置Nginx运行控制

1、检测语法

[root@localhost ~]# nginx -t #测试配置是否有语法错误
详解Nginx两种方式实现访问控制

2、启动Nginx服务

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf #修改主配置文件
详解Nginx两种方式实现访问控制

[root@localhost ~]# nginx #启动Nginx
[root@localhost ~]# netstat -anpt | grep ":80" #检测服务是否启动
[root@localhost ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid
详解Nginx两种方式实现访问控制

3、停止Nginx服务

[root@localhost ~]# kill -1 3809 #平滑重启Nginx服务。相当于killall -s HUP nginx;nginx -s reload
[root@localhost ~]# kill -3 1514 #关闭Nginx服务。相当于killall -s QUIT nginx;nginx -s quit
[root@localhost ~]# nginx #重启服务
[root@localhost ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid号
详解Nginx两种方式实现访问控制

4、编辑Nginx服务脚本

[root@localhost ~]# vim /lib/systemd/system/nginx.service

[Unit]

Description=Nginx Server Control Script #说明
After=network.target #描述服务类别

[Service]

Type=forking #后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid #PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx #启动服务
ExecReload=/usr/bin/kill -s HUP $PIDFile #重载服务
ExecStop=/usr/bin/kill -s QUIT $PIDFile #停止服务

[Install]

WanteBy=multi-user.target

[root@localhost ~]# systemctl daemon-reload #重新加载服务单元
[root@localhost ~]# systemctl enable nginx.service #设置开机自启动

[root@localhost ~]# systemctl stop nginx.service#停止服务
[root@localhost ~]# systemctl start nginx.service#开启服务
[root@localhost ~]# systemctl reload nginx.service#平滑重启服务
[root@localhost ~]# systemctl restart nginx.service#重启服务

四、设置基于授权的访问控制

1、生成用户密码认证文件

[root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db tom

htpasswd在最开始编译安装的时候已经安装好htpasswd,用来创建授权用户数据文件,并维护其中的用户账号;
c代表create创建密码认证文件;
tom是认证文件中的用户名

[root@localhost ~]# cat /usr/local/nginx/passwd.db #查看密码文件
详解Nginx两种方式实现访问控制

2、修改密码认证文件权限以及所有者

[root@localhost ~]# chmod 400 /usr/local/nginx/passwd.db
[root@localhost ~]# chown nginx /usr/local/nginx/passwd.db

3、修改主配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
详解Nginx两种方式实现访问控制

4、重启Nginx服务

[root@localhost ~]# nginx -t
详解Nginx两种方式实现访问控制

[root@localhost ~]# systemctl restart nginx.service #重启服务

5、访问测试

详解Nginx两种方式实现访问控制

详解Nginx两种方式实现访问控制

五、设置基于客户端的访问控制

1、修改主配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
详解Nginx两种方式实现访问控制

2、重启Nginx服务

[root@localhost ~]# nginx -t
详解Nginx两种方式实现访问控制

[root@localhost ~]# systemctl restart nginx.service

3、访问测试

详解Nginx两种方式实现访问控制

猜你喜欢

转载自blog.51cto.com/11905606/2161634