当前位置: 首页 > news >正文

Nginx企业级负载均衡:技术详解系列(14)—— 账户认证功能

在这里插入图片描述
你好,我是赵兴晨,97年文科程序员。

你有没有听说过Nginx的账户认证功能?这可不只是一个技术问题,它关系到我们上网时的安全和便利。就像家里需要一把钥匙才能进们一样,Nginx的账户认证功能就是确保有只有授权的人才能访问特定的网站资源。

今天,我们就来聊聊这个功能。他在让网站更安全、使用起来更舒心方面。起着很大的作用。

官方帮助文档:
https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

环境准备:
操作系统:Centos7.9
已安装Nginx

1、安装HTTP服务器工具
我们需要先安装httpd-tools,它包含了创建用户认证文件所需的htpasswd工具。

yum -y install httpd-tools

在这里插入图片描述

2、创建用户认证文件
使用htpasswd工具创建用户和密码,这些信息将被存储在.htpasswd文件中。

htpasswd -cb /usr/local/nginx/conf/conf.d/.htpasswd user1 123456

在这里插入图片描述

htpasswd -b /usr/local/nginx/conf/conf.d/.htpasswd user2 123456

在这里插入图片描述
3、查看用户认证文件
检查 .htpasswd文件,确保用户已成功添加。

cat /usr/local/nginx/conf/conf.d/.htpasswd

在这里插入图片描述

4、配置Nginx认证
编辑Nginx配置文件,为特定资源设置基本认证。

server {listen 80;location = /login/ {root /data/nginx/html/pc;index index.html; # 启用基本认证auth_basic "login password";auth_basic_user_file /usr/local/nginx/conf/conf.d/.htpasswd;}
}

编辑完配置文件记得重新加载生效

systemctl reload nginx

5、测试HTTP基本认证
使用curl命令测试HTTP基本认证是否生效

[root@chensir ~]# curl -u user1:123456  http://chensir.ink/login/
hello pc web
[root@chensir ~]# curl -u user2:123456  http://chensir.ink/login/
hello pc web

在这里插入图片描述

结果很明显,如上图,当直接访问时,是访问不到任何资源的,会提示错误码401,如果请求的时候携带用户名和密码是可以访问到静态资源页面的。

咱们直接用浏览器访问看看效果:

在这里插入图片描述
会直接提示输入用户名和密码,输入密码之后效果如下

在这里插入图片描述

以上就是Nginx账户认证功能的分享啦,除了HTTP认证,Nginx还允许我们自定义错误页面,以提供更友好的用户体验。

自定义错误页面
在Nginx配置文件中,为不同的HTTP状态码指定自定义错误页面。
可用位置:http、server、location、if in location
以下是配置示例

error_page 404 /40x.html;
location = /40x.html {root /data/html/;
}
error_page 500 502 503 504 /error.html;
location = /error.html {root /data/nginx/html;
}

注意事项:

  • 确保 .htpasswd 文件的权限设置为仅root用户可读写,以保证安全性。
  • 自定义错误页面的路径应根据实际文件存放位置进行调整。
  • 在生产环境中,建议使用更安全的认证方式,如OAuth或JWT。

OK,以上就是今天的全部分享啦。如果你对限制访问IP的配置感兴趣,或者想回顾相关知识点,可以参考我之前的文章《使用Nginx对网站资源进行加密访问并限制访问IP》。在这篇文章中,我分享了如何通过Nginx实现对网站资源的加密访问,以及如何限制特定IP的访问,为你提供了全面的操作指南和最佳实践。

分享一句我最最喜欢的话 “时间从来不语,却回答了所有的问题。” 咱们下期见!

相关文章:

  • 用贪心算法计算十进制数转二进制数(小数部分)
  • (CPU/GPU)粒子继承贴图颜色发射
  • 408操作系统知识点——第二章 内存管理
  • 数据分析必备:一步步教你如何用Pandas做数据分析(14)
  • VMware虚拟机中Centos最小化安装后的常用配置
  • CentOS系统上安装单机版Redis教程
  • 【网络安全】Web安全基础 - 第二节:前置基础知识- HTTP协议,握手协议,Cookie及Session
  • 【退役之重学】为什么要加入多级缓存
  • PDF 转 word (优化版)
  • rest_framework_simplejwt自定义使用——登录功能
  • Hive-因精度丢失导致的 join 数据异常
  • STL用法总结
  • 简单说说我对集成学习算法的一点理解
  • 【实战教程】构建可复用的 Spring Boot starter 微服务组件
  • Android 使用kotlin Retrofit2 + Dagger2完成网络请求跟依赖注入组合使用
  • Android单元测试 - 几个重要问题
  • Debian下无root权限使用Python访问Oracle
  • egg(89)--egg之redis的发布和订阅
  • gulp 教程
  • java正则表式的使用
  • Kibana配置logstash,报表一体化
  • leetcode讲解--894. All Possible Full Binary Trees
  • Meteor的表单提交:Form
  • Quartz初级教程
  • spark本地环境的搭建到运行第一个spark程序
  • 机器学习 vs. 深度学习
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 如何在 Tornado 中实现 Middleware
  • 入口文件开始,分析Vue源码实现
  • 实习面试笔记
  • 小而合理的前端理论:rscss和rsjs
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​学习一下,什么是预包装食品?​
  • !!java web学习笔记(一到五)
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # linux从入门到精通(三)
  • #70结构体案例1(导师,学生,成绩)
  • #pragma预处理命令
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (接口自动化)Python3操作MySQL数据库
  • (转)nsfocus-绿盟科技笔试题目
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .NET MVC第三章、三种传值方式
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .net和jar包windows服务部署
  • [ SNOI 2013 ] Quare
  • [ACTF2020 新生赛]Include
  • [Android]使用Android打包Unity工程
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存