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

简介

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

实验环境

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

搭建步骤

一、准备工作

1、关闭防火墙及selinux

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

[[email protected] ~]# vim /etc/sysconfig/selinux

[[email protected] ~]# reboot #重启Linux生效

二、搭建Nginx服务

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

[[email protected] ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++

2、创建Nginx进程用户

[[email protected] ~]# useradd -M -s /sbin/nologin nginx

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

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

参数解析:

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

[[email protected] nginx-1.12.0]# make && make install

4、优化路径

[[email protected] ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

三、设置Nginx运行控制

1、检测语法

[[email protected] ~]# nginx -t #测试配置是否有语法错误

2、启动Nginx服务

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf #修改主配置文件

[[email protected] ~]# nginx #启动Nginx
[[email protected] ~]# netstat -anpt | grep ":80" #检测服务是否启动
[[email protected] ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid

3、停止Nginx服务

[[email protected] ~]# kill -1 3809 #平滑重启Nginx服务。相当于killall -s HUP nginx;nginx -s reload
[[email protected] ~]# kill -3 1514 #关闭Nginx服务。相当于killall -s QUIT nginx;nginx -s quit
[[email protected] ~]# nginx #重启服务
[[email protected] ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid号

4、编辑Nginx服务脚本

[[email protected] ~]# 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

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

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

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

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

[[email protected] ~]# htpasswd -c /usr/local/nginx/passwd.db tom

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

[[email protected] ~]# cat /usr/local/nginx/passwd.db #查看密码文件

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

[[email protected] ~]# chmod 400 /usr/local/nginx/passwd.db
[[email protected] ~]# chown nginx /usr/local/nginx/passwd.db

3、修改主配置文件

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf

4、重启Nginx服务

[[email protected] ~]# nginx -t

[[email protected] ~]# systemctl restart nginx.service #重启服务

5、访问测试

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

1、修改主配置文件

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf

2、重启Nginx服务

[[email protected] ~]# nginx -t

[[email protected] ~]# systemctl restart nginx.service

3、访问测试

原文地址:http://blog.51cto.com/11905606/2161634

时间: 2024-10-06 08:20:18

详解Nginx两种方式实现访问控制的相关文章

POI操作Excel详解,HSSF和XSSF两种方式

HSSF方式: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.

LVS原理详解(3种工作模式及8种调度算法)

2017年1月12日, 星期四 LVS原理详解(3种工作模式及8种调度算法) LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) 作者:woshiliwentong  发布日期:2014-01-06 09:31:20 一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集

SSE技术详解:一种全新的HTML5服务器推送事件技术

前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server-sent Events).关于这4种技术方式的优缺点,请参考<Web端即时通讯技术盘点:短轮询.Comet.Websocket.SSE>.本文将专门讲解SSE技术. 服务器推送事件(Server-sent Events),简称SSE,是 HTML 5 规范中的一个组成部分,可以用来从服务端

网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2次. >强烈依赖数据库的驱动jar 解决办法: Class.forName("com.mysql.jdbc.Driver"); 1.1.2 API详解:java.sql.Statement接口: 操作sql语句,并返回相应结果 String sql = "某SQL语句&qu

Python36 1.joinablequeue 2.线程理论 3.多线程对比多进程 4.线程的使用方式 4.1.产生 线程的两种方式 4.2.守护线程 4.3.线程安全问题 4.3.1.互斥锁 4.3.2.死锁 4.3.3.可重入锁 4.3.4.信号量

复习1.守护进程2.互斥锁(解决数据错乱的方法)3.IPC(进程间通讯)4.生产者与消费者模型 详解:1.守护进程 一个进程可以设为另一个进程的守护进程 特点:被守护的进程结束时,守护进程也会随之结束 本质:父进程交给子进程一个任务,然而父进程 先于子进程结束了,子进程的任务也就没有必要 继续执行了 格式:开始前加 p.daemon=True 2.互斥锁(解决数据错乱的方法)方法一:互斥锁 互斥 互相排斥 锁的本质:一个标志 标志的两个状态: 1.锁定 2.未锁定 什么时候用? 当多个进程要操作

Ubuntu 安装 JDK 7 / JDK8 的两种方式

ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用ppa/源方式安装 1.添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 2.安装oracle-java-installer jdk7 sudo apt-get install oracle-java7-inst

WebService的两种方式SOAP和REST比较 (转)

我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript提供API,而淘宝TOP则采用直接的HTTP+XML请求方式,最令我疑惑的是教材上讲的WSDL,UDDI从没有在这些API中出现过.现在知道了WebService原来有两种方式,一是SOAP协议方式,在这种方式下需要WSDL,UDDI等,二是REST方式,这种方式根本不需要WSDL,UDDI等.而且

OpenCV4Android开发环境搭建两种方式加上图像二值化

1.环境搭建 进行android开发所需要的环境一般为:eclipse + android sdk + ADT,而OpenCV的开发由于需要编写本地代码(C/C++),因此还需要安装以下工具:NDK,Cygwin,CDT.网上都有大量详细的安装讲解,本文只描述下其中关键步骤. 1.1 NDK的安装 (1) NDK下载后解压到固定目录即可,无需安装.本文解压到D盘根目录下,其路径为:D:\android-ndk-r8d: (2) 添加环境变量,将其安装路径添加到系统path变量中,并添加系统变量N

linux ---JDK的安装与配置--两种方式

linux下的JDK的安装与配置:JDK的安装有两种方式: tar包和rpm安装1.tar包安装: 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 我用的是:jdk-7u67-linux-x64.tar.gz 1.解压: tar -xvf jdk-7u67-linux-x64.tar.gz 2.在/usr/local/下新建一个java目录,mkdir java 3.