Nginx层面配置基础用户验证的完整步骤

前言

应用场景:大概是在内部网站需要外部用户访问到,同时不能给访问者网站账号权限,所以在 nginx 层面进行限制。例如外包项目,内部员工有账号进行文档的操作,外包员工没有内部账号,但需要让他们能够看到文档,所以在 nginx 层面设置用户验证是最佳最简单的选择,多数情况下雇主方不会给外包员工开一个基础访问权限的账号。

在 nginx 层面进行进行用户认证的前置条件:需要有对应的密码创建程序,如apache2-utils(Debian,Ubuntu)或 httpd-tools(RHEL / CentOS / Oracle Linux),不同操作系统是不同的软件。

创建账户密码文件

  • 使用命令 sudo htpasswd -c /etc/apache2/.htpasswd user1 创建第一个账户,然后按下 Enter 键输入密码,同样的命令,没有 -c 参数创建第二个用户及密码, -c 参数为创建文件,在第二次及以后的命令中不需要再次创建文件。
  • 确认一下文件及账号信息生成成功,使用命令 cat /etc/apache2/.htpasswd 查看文件内容,应该为账号及加密后的密码,如:user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0 等。

配置 nginx 进行 http 基础用户验证

使用 auth_basic 指令指定设置受保护区域的名称,此名称会显示在账号密码弹窗上,使用 auth_basic_user_file 指令设置带有账户密码信息的 .htpasswd 路径。例如配置:

location /api {
 auth_basic   "Administrator's Area";
 auth_basic_user_file /etc/apache2/.htpasswd;
}

此外,如果某个区块不想继承整个认证体系,可以在区块内设置 auth_basic off,即用户认证关闭状态。例如配置:

server {
 ...
 auth_basic   "Administrator's Area";
 auth_basic_user_file conf/htpasswd;

 location /public/ {
  auth_basic off;
 }
}

通过 ip 地址将认证与访问限制相结合

HTTP基本认证可以通过IP地址有效地与访问限制相结合。您可以实现至少两种方案:

  • 用户需要通过身份验证并且具有 ip 访问权限
  • 用户需要通过身份验证或者具有 ip 访问权限

1、使用 allow 和 deny 指令来允许或限制指定 ip 的访问,例如配置:

location /api {
 #... deny 192.168.1.2;
 allow 192.168.1.1/24;
 allow 127.0.0.1;
 deny all;
}

2、在 192.168.1.2 地址以外的网络,仅授予 192.168.1.1/24 的访问权限。注意:allow 和 deny 指令将按照定义的顺序应用。

通过ip 和 http 身份验证将限制与 satisfy 指令相结合。如果将指令设置为all,则在客户端满足这两个条件时授予访问权限。如果将指令设置为 any,则如果客户端满足至少一个条件,则授予访问权限,例如配置:

location /api {
 #... satisfy all; 

 deny 192.168.1.2;
 allow 192.168.1.1/24;
 allow 127.0.0.1;
 deny all;

 auth_basic   "Administrator's Area";
 auth_basic_user_file conf/htpasswd;
}

综上可以组织成一个完整的例子:

http {
 server {
  listen 192.168.1.23:8080;
  root /usr/share/nginx/html;

  location /api {
   api;
   satisfy all;

   deny 192.168.1.2;
   allow 192.168.1.1/24;
   allow 127.0.0.1;
   deny all;

   auth_basic   "Administrator's area";
   auth_basic_user_file /etc/apache2/.htpasswd;
  }
 }
}

最终效果如图:

© 原创文章,参考自 官方文档

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • 利用nginx访问日志如何记录mysql中的用户id详解

    前言 大家应该都知道,nginx有很强大的日志功能,但是在缺省状态下,它只能记录用户的IP地址以及浏览器信息.如果我们有用户登录注册系统,在用户已登录的情况下,想记录访问某一个网页的到底是哪一个用户,怎么办呢?因为我们不只想知道到底是哪一个IP地址访问了哪一个网页,并且还想知道到底是哪一个登录用户访问了哪一个网页,这对于我们日后有针对性地向他/她推荐信息甚至推送广告都是非常有用的.下面话不多说,来一起看看详细的介绍: nginx缺省的日志格式 127.0.0.1 - - [20/Jul/2017

  • 详解Nginx实战之让用户通过用户名密码认证访问web站点

    有时我们会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开,我们希望的是某些特定的客户端可以访问.那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那些不速之客. 实验环境: 现在公司开通了一个内部使用网站为www1.rsyslog.org,要求所有人查看网页信息之前都必须要输入内定的用户名及密码方可浏览网页 使用nginx下虚拟主机的搭建 www1.rsyslog.org进行测试. www1.rsyslog.org 192.168.100.107

  • Nginx中配置用户服务器访问认证的方法示例

    Nginx超级强大它可以单独为一个域名设置用户认证,方法也很简单我们只要生成用户认证的用户名和密码,然后再Nginx添加auth认证配置即可. Nginx可以为某一个域名单独加用户认证,具体做法如下: 1. 生成用户认证的用户名和密码: #wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh 根据提示输入: 用户名: 密码: 文件名: 脚本会自动生成认证文件,auth.conf内容如下: /usr/local/nginx/con

  • Nginx中的用户认证配置及阻止用户使用代理访问的方法

    nginx用户认证配置( Basic HTTP authentication) ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容.web上的一些内容不想被其他人知道,但是又想让部分人看到.nginx的http auth模块以及Apache http auth都是很好的解决方案. 默认情况下nginx已经安装了ngx_http_auth_basic_module模块,如果不需要这个模块,可以加上 --without-http_auth

  • 在Nginx中拦截特定用户代理的教程

    现代互联网滋生了大量各种各样的恶意机器人和网络爬虫,比如像恶意软件机器人.垃圾邮件程序或内容刮刀,这些恶意工具一直偷偷摸摸地扫描你的网站,干些诸如检测潜在网站漏洞.收获电子邮件地址,或者只是从你的网站偷取内容.大多数机器人能够通过它们的"用户代理"签名字符串来识别. 作为第一道防线,你可以尝试通过将这些机器人的用户代理字符串添加入robots.txt文件来阻止这些恶意软件机器人访问你的网站.但是,很不幸的是,该操作只针对那些"行为良好"的机器人,这些机器人被设计遵循

  • 详解在使用CDN加速时Nginx获取用户IP的配置方法

    关于CDN 内容分发网络(Content delivery network或Content distribution network,缩写:CDN)是指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快.更可靠地将音乐.图片.视频.应用程序及其他文件发送给用户,来提供高性能.可扩展性及低成本的网络内容传递给用户. 内容分发网络的总承载量可以比单一骨干最大的带宽还要大.这使得内容分发网络可以承载的用户数量比起传统单一服务器多.也就是说,若把有100Gbps处理能力的服务器放在只

  • Nginx用户认证配置方法详解(域名/目录)

    Nginx可以为某一个域名单独加用户认证,具体做法如下: 1. 生成用户认证的用户名和密码: 复制代码 代码如下: #wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh 根据提示输入: 用户名:密码:文件名: 脚本会自动生成认证文件,auth.conf内容如下: 复制代码 代码如下: /usr/local/nginx/conf/auth.conf 2. 为Nginx添加auth认证配置 下面以某域名下面的auth目录为例,在域

  • Nginx层面配置基础用户验证的完整步骤

    前言 应用场景:大概是在内部网站需要外部用户访问到,同时不能给访问者网站账号权限,所以在 nginx 层面进行限制.例如外包项目,内部员工有账号进行文档的操作,外包员工没有内部账号,但需要让他们能够看到文档,所以在 nginx 层面设置用户验证是最佳最简单的选择,多数情况下雇主方不会给外包员工开一个基础访问权限的账号. 在 nginx 层面进行进行用户认证的前置条件:需要有对应的密码创建程序,如apache2-utils(Debian,Ubuntu)或 httpd-tools(RHEL / Ce

  • nginx结合keepalived实现高可用的完整步骤

    前言 为了满足系统的高可用,一般都需要搭建集群.当主机挂掉的时候,我们的系统还可以继续提供服务.当我们使用nginx作为反向代理和动静分离服务器的时候,也是如此.实现系统的高可用性,是我们程序员关注的重点.本文介绍了nginx结合keepalived实现主从模式搭建高可用集群. 前提知识 本文不作过多的nginx相关配置介绍,默认读者已经了解nginx的相关知识. keepalived的介绍 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepali

  • spring boot配置druid连接池的完整步骤

    Druid的简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSource.Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验.Druid是阿里巴巴开发的号称为监控而生的数据库连接池! Druid的功能 1.替换DBCP和C3P0.Druid提供了一个高效.功能强大.可扩展性好的数据库连接池. 2.可以监控数据库

  • linux虚拟机配置静态IP地址的完整步骤

    前言 在很多时候我们都会用到虚拟机,比如一些测试没检测,练习的东西可以在虚拟机上,不必担心会搞坏什么,本文主要给大家介绍了linux虚拟机配置静态IP地址的相关内容,下面话不多说了,来一起看看详细的介绍吧 步骤如下: 1.命令行调用 vi /etc/sysconfig/network-scripts/ifcfg-eth0 命令行.png 2.上面红色的内容需要修改,需要输入i进入编辑模式 ipconfig 对应自己需要生成的ip地址 DNS1和GATEWAY对应自己的网关地址 GATEWAY对应

  • vue-cli3项目配置eslint代码规范的完整步骤

    前言 最近接手了一个项目,由于之前为了快速开发,没有做代码检查.为了使得代码更加规范以及更易读,所以就要eslint上场了. 安装依赖 安装依赖有两种方法: 在cmd中打上把相应的依赖加到devDependencies下,再npm install对应依赖. 在package.json文件加上相应依赖: "eslint-plugin-html": "^6.0.3", "@vue/cli-plugin-eslint": "^3.3.0&qu

  • nginx通过https部署vue项目的完整步骤

    目录 一.生成证书 进入nginx安装目录 创建ssl文件目录 生成server.key,需要设置两次密码 生成无密码的server.key 创建服务器证书的申请文件 server.csr 生成crt证书文件server.crt 二.nginx配置 三.修改vue配置文件 总结 本篇主要记录vue项目,通过nginx实现https部署的免费方案.主要参考步骤和关键点如下所示. 一.生成证书 进入nginx安装目录 # 进入nginx目录 [root@hecs-402944 nginx]# cd

  • mysql8重置root用户密码的完整步骤

    前言 最近很多新入职的同事问这个问题,特别是通过 homebrew 自动安装的 mysql ,其版本默认已经是 8.0 了,由于增加了一些安全策略等限制,所以修改用户密码会稍微麻烦些,索性就把这个总结贴一下吧. 下面话不多说了,来一起看看详细的介绍吧 步骤如下: 1.首先查看 root 用户相关信息,在 mysql 数据库的 user 表中: select host, user, authentication_string, plugin from user; host:允许用户登录的ip'位置

  • VSCode配置C#运行环境的完整步骤

    前言 最近在学c#,运行环境一般都是在vs中,但是想单纯的写一些短的测试代码还是习惯使用vscode,记录一下配置过程. VSCode配置C#运行环境 1. 下载 dotnet-sdk 下载地址:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install 懒得去官网下载可以直接拿我下载好的,放在了百度网盘,需要可自行下载 链接: https://pan.baidu.com/s/144WwujY2PIwy3esYx7

  • AR系列路由器使用SSH用户验证方式为password登录路由器的典型配置

    大 | 中 | 小    SSH是Secure Shell(安全外壳)的简称,用户通过一个不能保证安全的网络环境远程登录到路由器时,SSH特性可以提供安全保障和强大的认证功能,以保护路由器不受诸如IP地址欺诈.明文密码截取等等的攻击. 使用SSH Client通过password方式登录路由器 # sysname Quidway # radius scheme system # domain system # local-user huawei             /创建本地帐号"huawe

  • Linux\Nginx 环境下虚拟域名配置及测试验证

    使用 Nginx 虚拟域名配置,可以不用去购买域名,就可以通过特定的域名访问本地服务器.减少发布前不必要的开支. 配置步骤 1. 编辑 nginx.conf 配置文件  sudo vim /usr/local/nginx/Nginx/conf/nginx.xonf (1) 添加域名到文件名(方便日后管理) 这里添加的一下代码是在 nginx.conf 的 http 结点下添加便可. 但是需要注意的 vhost 文件夹的路径,这里的创建的 vhost 文件夹的路径是: /usr/local/ngi

随机推荐