nginx服务配置练习

题目:

使用基于账号访问的配置,来配置通过 www.haha.com:8080/custom/index.html 访问时显示“你可以访问”,如果是 www.haha.com:8080/requir/index.html 则提示需要用户名和密码才能访问。

创建身份认证文件

[root@localhost conf.d]# htpasswd -cb passwdfile zhangsan 123456
Adding password for user zhangsan[root@localhost conf.d]# chmod 600 passwdfile 
[root@localhost conf.d]# chown nginx:root passwdfile 
[root@localhost conf.d]# ll passwdfile 
-rw-------. 1 nginx root 47 Mar 24 19:20 passwdfile
以下是这样设置的好处,在这个实验中不这样设置也没有什么影响,为了安全和专业还是养成习惯。权限设置为 600
安全性:权限600表示文件所有者有读和写的权限,而其他用户和组没有任何权限。这样可以确保只有所有者(即nginx用户)能够访问和修改该文件,防止其他用户或进程意外或恶意地读取或修改密码文件,从而保护用户认证信息的安全性,避免敏感信息泄露。所有者设置为 nginx
进程运行身份:Nginx 通常以nginx用户身份运行进程。将passwdfile的所有者设置为nginx,是为了让 Nginx 进程能够以其运行身份(nginx用户)对该文件具有适当的访问权限,以便在需要进行用户身份验证时能够读取密码文件中的信息,而不会因为权限不足导致身份验证失败。如果文件所有者不是nginx,可能会出现 Nginx 进程无法访问密码文件的情况,进而无法正常进行基于账号访问的身份验证功能。

书写配置文件

在 /etc/nginx/conf.d 目录下创建或编辑一个配置文件,如 haha.conf 

第一种

server {listen 8080;server_name www.haha.com;root /opt/haha;location /custom/index.html {index index.html;}location /requir/index.html {auth_basic "请输入用户名和密码";auth_basic_user_file /etc/nginx/conf.d/passwdfile;}
}
第一种
[root@localhost conf.d]# echo '你可以进入。'>/opt/haha/custom/index.html
通过html文件来显示你可以进入。
[root@localhost conf.d]# systemctl restart nginx
[root@localhost conf.d]# curl www.haha.com:8080/custom/index.html
你可以进入。

 第二种

server {listen 8080;server_name www.haha.com;root /opt/haha;location /custom/index.html {default_type text/plain;return 200 "你可以访问";}location /requir/index.html {auth_basic "请输入用户名和密码";auth_basic_user_file /etc/nginx/conf.d/passwdfile;}
}location /custom/index.html:匹配 /custom/index.html 的请求,使用 default_type text/plain; 指定返回内容的类型为纯文本,return 200 "你可以访问"; 返回状态码 200 和文本 “你可以访问”。
200不能省略在 Nginx 配置中,如果location /custom/index.html块中没有default_type text/plain;这一行配置,可能会产生以下影响:
内容类型识别问题:Nginx 默认会根据文件的扩展名来确定响应的Content - Type头信息。但在这个配置中,由于使用return直接返回文本内容,而不是返回一个实际的文件,Nginx 没有文件扩展名可以参考来确定内容类型。因此,缺少default_type配置可能导致 Nginx 无法正确设置Content - Type头信息,或者将其设置为默认的application/octet - stream(表示二进制流)。这可能会使客户端(如浏览器)在解析和显示内容时出现问题,例如,浏览器可能会将其当作二进制文件下载而不是直接显示文本内容。浏览器行为异常:浏览器根据Content - Type来决定如何处理接收到的数据。如果Content - Type不正确,浏览器可能会采取错误的方式来处理数据。例如,可能会尝试将文本内容当作其他类型的文件进行解析,导致显示乱码或无法正常显示。此外,浏览器的一些安全机制也可能会受到不正确Content - Type的影响,从而对页面的加载和显示产生限制。缓存问题:内容类型对于缓存机制也很重要。不同的内容类型可能有不同的缓存策略。如果Content - Type设置不正确,可能会导致缓存行为异常,例如缓存被不正确地设置或无法被有效利用,从而影响性能。
综上所述,default_type text/plain;这个配置项在这种情况下是很重要的,它确保了 Nginx 正确地设置响应的内容类型,使客户端能够正确地处理和显示返回的文本信息。

重启nginx

在修改配置文件后,需要检查配置文件的语法是否正确:nginx -t如果语法检查通过,重启 Nginx 服务使配置生效:systemctl restart nginx

验证是否符合要求

[root@localhost conf.d]# curl www.haha.com:8080/custom/index.html
你可以访问[root@localhostcurl www.haha.com:8080/requir/index.html
<html>
<head><title>401 Authorization Required</title></head>
<body>
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
[root@localhost conf.d]# curl -u zhangsan:123456 www.haha.com:8080/requir/index.html
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
[root@localhost conf.d]# echo '你已经通过账号密码进入'>/opt/haha/requir/index.html
[root@localhost conf.d]# curl -u zhangsan:123456 www.haha.com:8080/requir/index.html
你已经通过账号密码进入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42400.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AwesomeQt分享3(含源码)

AwesomeQt 这个项目包含了多个Qt组件的使用示例&#xff0c;旨在展示Qt各种强大功能的实现方式。 源码分享 github: awesome_Qtgitee: 后续同步 项目进度 QCustomPlot曲线控件示例 支持排序和筛选的列表控件示例 支持排序和筛选的表格控件示例 属性表示例 Dock窗口示例 自绘…

如何验证极端工况下的系统可靠性?

验证极端工况下系统可靠性的方法主要包括设计极限测试、环境应力筛选&#xff08;ESS&#xff09;、可靠性预测与建模。其中&#xff0c;设计极限测试最为关键&#xff0c;通过在试验中施加超过预期使用条件的应力&#xff0c;可以有效评估系统的真实承受能力和潜在弱点。这类测…

[计算机网络]网络I/O模型

欢迎来到啾啾的博客&#x1f431;。 这是一个致力于构建完善的Java程序员知识体系的博客&#x1f4da;&#xff0c;记录学习的点滴&#xff0c;分享工作的思考、实用的技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。…

MyBaitis-Plus 使用动态表名 selectPage 不生效

在使用 MyBatis-Plus 时&#xff0c;采用动态表名策略后&#xff0c;selectPage 方法无法正常生效。 MyBatis-Plus动态表名插件配置MyBatis-Plus动态表名失效原因MyBatis-Plus动态表名失效解决办法 MyBatis-Plus动态表名插件配置 以下是我项目中 MyBatis - Plus 的插件配置&am…

C语言基础—构造类型

数据类型 1.基本类型/基础类型 整型 短整型&#xff1a;short[int] --2字节 基本整型&#xff1a;int --4字节 长整型&#xff1a;long[int] --32位4字节/64位8字节 长长整型&#xff1a;long long [int] &#xff08;C99&#xff09; 注意&#xff1a;以上类型又都分为sig…

交流电机类型及其控制技术

交流电机可分为同步电机和异步电机两大种类&#xff0c;如果电机转子的转速与定子旋转磁场的转速相等&#xff0c;转子与定子旋转磁场在空间同步地旋转&#xff0c;这种电机就称为同步电机。如果电机转子的转速不等于定子旋转磁场的转速&#xff0c;转子与定子旋转磁场在空间旋…

「HTML5+Canvas实战」星际空战游戏开发 - 纯前端实现 源码即开即用【附演示视频】

纯前端实现星际空战游戏【简易版】 博主上次分享的简易版飞机大战收到了不少建议,今天再给大家来一波福利!带来全新升级的飞机大战进阶版!不仅拥有更丰富的游戏机制和更精美的游戏画面,还加入了超燃的BOSS战斗系统。源码完全免费开放,拿来即用无门槛,欢迎感兴趣的小伙伴…

7-项目负责人-添加产品

点击一个项目集&#xff0c;进入项目集的页面。可以进行产品、项目、人员和干系人的管理。 点击“添加产品”&#xff0c;为该项目集添加关联产品。一个项目集可以关联多个产品。还可以通过“产品线”管理一些列产品。 产品。

深度赋能!北京智和信通融合DeepSeek,解锁智能运维无限可能

在数字化飞速发展的今天&#xff0c;传统运维模式面临着设备规模激增、故障复杂度攀升、人工响应滞后等多重挑战。随着DeepSeek、腾讯元宝等AI大模型的兴起&#xff0c;为传统运维模式带来了新的变革。 北京智和信通基于DeepSeek大模型技术&#xff0c;将AI和运维场景深度融合&…

flex和bison笔记

文章目录 flex语法&#xff1a;定义部分:规则部分:flex全局变量&#xff1a;yyin: bison和flex联合编译: flex词法分析 bison语法分析 flex有两种使用方式&#xff0c;一种是flex单独做一个词法分析程序&#xff0c;另一种是flex和bison协同构建一个词法语法分析程序 我们在北…

rbpf虚拟机-call指令

文章目录 一、概述背景知识 二、call 指令的主要方法2.1 注册辅助函数2.2 执行辅助函数 三、完整代码示例与详解3.1 示例辅助函数3.2 测试虚拟机的 call 指令测试代码代码解析 四、总结 Welcome to Code Blocks blog 本篇文章主要介绍了 [rbpf虚拟机-call指令] ❤博主广交技术…

Java构造函数与普通函数

1.概解 tips&#xff1a; 1.声明函数主要用public/private&#xff0c;public可以在其他函数中访问。 2.public后面跟函数返回类型&#xff0c;void表示无返回值。 3.main函数是自动执行的构造函数&#xff0c;而其他函数除非被调用则不会被自动执行 运行结果&#xff1a…

MySQL: 创建两个关联的表,用联表sql创建一个新表

MySQL: 创建两个关联的表 建表思路 USERS 表&#xff1a;包含用户的基本信息&#xff0c;像 ID、NAME、EMAIL 等。v_card 表&#xff1a;存有虚拟卡的相关信息&#xff0c;如 type 和 amount。关联字段&#xff1a;USERS 表的 V_CARD 字段和 v_card 表的 v_card 字段用于建立…

A2 最佳学习方法

记录自己想法的最好理由是发现自己的想法&#xff0c;并将其组织成可传播的形式 (The best reason for recording what one thinks is to discover what one thinks and to organize it in transmittable form.) Prof Ackoff 经验之谈&#xff1a; 做培训或者写文章&#xff…

六十天前端强化训练之第三十二天之Babel 转译配置大师级深度讲解

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、核心概念与知识体系详解 1. Babel 工作原理全景解析 二、完整配置方案&#xff08;带详细注释&#xff09; 1. 进阶版 .babelrc 配置 2. Webpack 集成配置&#xff08…

Linux 下安装和使用 Jupyter Notebook

Jupyter Notebook / Lab 是 Python 开发和数据分析中不可或缺的工具。为了避免环境污染&#xff0c;推荐使用虚拟环境方式安装并启动它。本教程将教你如何&#xff1a; 安装 Python、pip、venv使用虚拟环境安装 Jupyter设置登录密码启动并远程访问编写一个一键启动脚本&#x…

【云成本优化案例】K8s计费探针让跨境电商企业节省30%云预算

01. 财务“谜案”&#xff1a;消失的30%云预算 "我们的K8s集群资源利用率高达78%&#xff0c;但业务部门总说云账单对不上。"某跨境电商企业CTO的报案记录&#xff0c;揭开了一场云原生时代的财务谜案。该企业技术团队自查了所有资源配额和HPA配置&#xff0c;却始…

PyTorch 分布式训练(Distributed Data Parallel, DDP)简介

PyTorch 分布式训练&#xff08;Distributed Data Parallel, DDP&#xff09; 一、DDP 核心概念 torch.nn.parallel.DistributedDataParallel 1. DDP 是什么&#xff1f; Distributed Data Parallel (DDP) 是 PyTorch 提供的分布式训练接口&#xff0c;DistributedDataPara…

蓝桥杯[每日一题] 真题:连连看

题目描述 小蓝正在和朋友们玩一种新的连连看游戏。在一个 n m 的矩形网格中&#xff0c;每个格子中都有一个整数&#xff0c;第 i 行第 j 列上的整数为 Ai, j 。玩家需要在这个网格中寻找一对格子 (a, b) − (c, d) 使得这两个格子中的整数 Aa,b 和 Ac,d 相等&#xff0c;且它…

Linux环境下安装部署Docker

windows下连接Linux&#xff1a; 打开终端&#xff1a; //ssh远程连接 ssh root192.168.xx.xx//输入账号密码 root192.168.xx.xxs password: ssh连接成功&#xff01; 安装Docker&#xff1a; //安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 …