如何在 Ubuntu上使用 Nginx 设置密码验证

2023-05-16

介绍

设置 Web 服务器时,您通常希望限制访问网站的某些部分。Web 应用程序通常提供自己的身份验证和授权方法,但如果这些方法不充分或不可用,则可以使用 Web 服务器本身来限制访问。

在本指南中,我们将演示如何在 Ubuntu 上运行的 Nginx Web 服务器上对资产进行密码保护。

先决条件

要开始使用,您需要访问 Ubuntu 服务器环境。您将需要具有特权的非 root 用户sudo才能执行管理任务。

如果您还没有这样做,请输入以下命令在您的计算机上安装 Nginx:

sudo apt-get update
sudo apt-get install nginx

创建密码文件

首先,我们需要创建一个文件来保存我们的用户名和密码组合。您可以使用服务器上可能已经可用的 OpenSSL 实用程序来执行此操作。或者,您可以使用包中包含的专用htpasswd实用apache2-utils程序(Nginx 密码文件使用与 Apache 相同的格式)。在下面选择您最喜欢的方法。

使用 OpenSSL 实用程序创建密码文件

如果您在服务器上安装了 OpenSSL,则可以创建一个密码文件,而无需其他软件包。.htpasswd我们将在配置目录中创建一个名为的隐藏文件/etc/nginx来存储我们的用户名和密码组合。

您可以使用此命令将用户名添加到文件中。我们将demo其用作我们的用户名,但您可以使用任何您喜欢的名称:

sudo sh -c "echo -n 'demo:' >> /etc/nginx/.htpasswd"

接下来,通过键入以下内容为用户名添加加密密码条目:

sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

您可以对其他用户名重复此过程。您可以通过键入以下内容查看用户名和加密密码如何存储在文件中:

cat /etc/nginx/.htpasswd

输出如下:

sammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

使用 Apache 实用程序创建密码文件

虽然 OpenSSL 可以为 Nginx 身份验证加密密码,但许多用户发现使用专门构建的实用程序更容易。包中的htpasswd实用程序apache2-utils很好地提供了此功能。

通过键入以下命令在您的服务器上安装apache2-utils软件包:

sudo apt-get update
sudo apt-get install apache2-utils

现在,您可以访问该htpasswd命令。我们可以使用它来创建一个 Nginx 可以用来验证用户的密码文件。为此,我们将.htpasswd在我们的/etc/nginx配置目录中创建一个隐藏文件。

我们第一次使用这个实用程序时,我们需要添加-c创建指定文件的选项。demo我们在命令末尾指定一个用户名(在此示例中)以在文件中创建一个新条目:

sudo htpasswd -c /etc/nginx/.htpasswd demo

您将被要求提供并确认用户的密码。

省略-c您希望添加的任何其他用户的参数:

sudo htpasswd /etc/nginx/.htpasswd another_user

如果我们查看文件的内容,我们可以看到每条记录的用户名和加密密码:

cat /etc/nginx/.htpasswd

输出如下

demo:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

配置 Nginx 密码认证

现在我们有了一个包含 Nginx 可以读取格式的用户和密码的文件,我们需要配置 Nginx 以在提供受保护的内容之前检查该文件。

首先打开您希望添加限制的服务器块配置文件。对于我们的示例,我们将使用default通过 Ubuntu 的 Nginx 包安装的服务器块文件:

sudo nano /etc/nginx/sites-enabled/default

在内部,去掉注释后,该文件应类似于以下内容:

/etc/nginx/sites-enabled/default

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}

要设置身份验证,您需要决定要限制的上下文。在其他选择中,Nginx 允许您在服务器级别或特定位置内设置限制。在我们的示例中,我们将使用位置块限制整个文档根目录,但您可以修改此列表以仅针对 Web 空间中的特定目录:

在此位置块中,使用该auth_basic指令打开身份验证并选择在提示输入凭据时向用户显示的领域名称。我们将使用该auth_basic_user_file指令将 Nginx 指向我们创建的密码文件:

/etc/nginx/sites-enabled/default

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

完成后保存并关闭文件。重启 Nginx 以实现你的密码策略:

sudo service nginx restart

您指定的目录现在应该受密码保护。

确认密码认证

要确认您的内容受到保护,请尝试在 Web 浏览器中访问您的受限内容。您应该看到如下所示的用户名和密码提示:

image-20220720143512291

如果您输入正确的凭据,您将被允许访问内容。如果您输入错误的凭据或点击“取消”,您将看到“需要授权”错误页面:

Nginx 未经授权的错误

结论

您现在应该拥有为您的站点设置基本身份验证所需的一切。请记住,密码保护应该与 SSL 加密相结合,这样您的凭据就不会以纯文本形式发送到服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu上使用 Nginx 设置密码验证 的相关文章

  • 【问题解决】Ubuntu中双击文件夹没有反应

    我的情况是 xff0c 在Windows下安装的虚拟机 xff0c 虚拟机上跑的Ubuntu16 04 某天突然出现这个bug xff0c 而且开其他的Ubuntu也是这种情况 百度一下 xff0c 我就知道了 xff0c 是在Window
  • 在Chrome中加载未打包的扩展

    Load the extension Extensions that you download from the Chrome Web Store are packaged up as crx files which is great fo
  • 在VMware下创建ubuntu虚拟机,以及与win建立ssh远程连接,全网最全

    一 下载VMware Workstation 官方下载最新版本 xff0c 正常下载即可 二 下载Ubuntu ios镜像文件 下载地址 xff1a https ubuntu com download desktop 三 Ubuntu 配置
  • log4j2.xml 配置文件详解

    一 log4j2介绍 log4j 2 x版本不再支持像1 x中的 properties后缀的文件配置方式 xff0c 2 x版本配置文件后缀名只能为 34 xml 34 json 34 或者 jsn 34 配置文件的格式 xff1a log
  • 个性化设置shell命令提示符

    实际显示效果如下 xff1a 对应的命令如下 xff0c 可以根据自己喜欢的颜色做修改 xff1a PS1 61 39 debian chroot 43 debian chroot 033 01 32m u 64 h 033 00m 033
  • Python安装时import matplotlib.pyplot as plt报错

    xfeff xfeff from six import advance iterator integer types ImportError No module named six 解决办法是 xff1a 把路径如 xff1a C Pyth
  • easyExcel Content-Type: application/vnd.ms-excel 异常

    自测ok xff0c 部署到服务器就报错 一开始以为消息转换器问题 没看cause by导致定位的方向错误 报错一看 缺少so库导致的 本地是m1pro的arm jdk11 再看看线上的dockerfile 用的是FROM openjdk
  • Xfce,KDE和Gome之间的自由切换。

    今天尝试了一下ubuntu 43 xfce 但是发现xfce虽然轻小 xff0c 但是反映和表现并不好 在兼容性上存在很大的问题 于是决定卸掉xfce 鉴于之前使用gnome和uity比较长久的历史 xff0c 今天决定尝试下kde 首先需
  • SimuLink示波器设置多路输入

    PS xff1a matlab版本 xff1a Matlab2019a step1 xff1a 打开 Simulink Library Browser xff0c 搜索 scope xff08 示波器 xff09 xff0c 拖拽入仿真面板
  • Ubuntu22.04上安装Xilinix Vivado 2018.3

    OpenWiFi的默认编译仿真工具是Xilinx Vivado 218 3 在Ubuntu22 04 LTS上安装Xilinx Vivado 2018 3之前 xff0c 首先要安装如下的库 sudo apt get install lib
  • 将应用加到Ubuntu的Favorites

    Ubuntu可以将从它的repo安装的应用程序加到Favorites xff0c 从而方便使用 但有很多应用程序并不是这样安装的 xff0c 就不能直接加到Favorites 下面的方法可以将任何应用加到Favorites 首先生成一个de
  • Build OpenAirInterface

    OpenAirInterface is a famous open source LTE NR implementation Its buidling guide doc BUILD md says that it can be build
  • Android技巧:学习使用GridLayout

    GridLayout是一个非常强大的网格类布局 xff0c 它不但能像TableLayout那样 xff0c 实现网格类布局 xff0c 但它更为强大的地方在于每个Cell的大小可以横向或者纵向拉伸 xff0c 每个Cell的对齐方式也有很
  • 说说Android的MVP模式

    更多精彩博客 安卓应用开发是一个看似容易 xff0c 实则很难的一门苦活儿 上手容易 xff0c 看几天Java xff0c 看看四大组件咋用 xff0c 就能整出个不太难看的页面来 但是想要做好 xff0c 却是很难 系统框架和系统组件封
  • Android实战技巧:如何在ScrollView中嵌套ListView

    前几天因为项目的需要 xff0c 要在一个ListView中放入另一个ListView xff0c 也即在一个ListView的每个ListItem中放入另外一个ListView 但刚开始的时候 xff0c 会发现放入的小ListView会
  • Android实战技巧:ViewStub的应用

    在开发应用程序的时候 xff0c 经常会遇到这样的情况 xff0c 会在运行时动态根据条件来决定显示哪个View或某个布局 那么最通常的想法就是把可能用到的View都写在上面 xff0c 先把它们的可见性都设为View GONE xff0c
  • 深入浅出Windows BATCH

    1 什么是Windows BATCH BATCH也就是批处理文件 xff0c 有时简称为BAT xff0c 是Windows平台上的一种可执行脚本 xff0c 与 nix Linux和Unix 上的Shell脚本和其他的脚本 xff08 P
  • Android实战技巧:深入解析AsyncTask

    AsyncTask的介绍及基本使用方法 关于AsyncTask的介绍和基本使用方法可以参考官方文档和Android实战技巧 xff1a 多线程AsyncTask 这里就不重复 AsyncTask引发的一个问题 上周遇到了一个极其诡异的问题
  • 学习Kotlin,看这一篇就够了

    人生苦短 xff0c 要用Kotlin 这是一种对程序猿更为友好的语言 xff0c 可以减少开发者的工作量 xff0c 原本由开发者干的事情 xff0c 其实很多都可以由编译器实现了 xff0c 这是一种更为高级的语言 Java虽然严谨 x
  • Ubuntu 超给力终端 Terminator(包含超全快捷键列表)

    Terminator是Ubuntu上的一款拥有强大能力的终端app 文章目录 1 Terminator 特性2 Terminator 安装3 Terminator 快捷键一览 1 Terminator 特性 Terminator 与xter

随机推荐

  • Sed与AWK入门教程之Sed篇

    Sed和AWK是 nix命令行里面文本处理的神器 相当的强大 它们都是面向行的 或者说它们处理文本的方式都是一行接着一行的处理 从标准输入或者文件中读取内容 一行一行的执行脚本命令 然后打印输出到标准输出 直到文件结尾 EOF Sed Se
  • 老鸟的Python入门教程

    重要说明 这不是给编程新手准备的教程 如果您入行编程不久 或者还没有使用过1到2门编程语言 请移步 这是有一定编程经验的人准备的 最好是熟知Java或C 懂得命令行 Shell等 总之 这是面向老鸟的 让老鸟快速上手Python教程 为什么
  • MATLAB自编自适应中值滤波算法

    代码原理 xff1a 在噪声密度不是很大的情况下 xff08 根据经验 xff0c 噪声的出现的概率小于0 2 xff09 xff0c 使用中值滤波的效果不错 但是当噪声出现的概率比较高时 xff0c 原来的中值滤波算法就不是很有效了 只有
  • 利用Github免费搭建个人主页(个人博客)

    之前闲着 利用Github搭了个免费的个人主页 colin1994 xyz 这里是我的一个简单主页 xff0c 有兴趣的朋友可以访问看看 先不公开了 今天到家了 趁着闲着 写一篇相关教程记录自己搭建的过程 涉及 Github注册 Githu
  • SpringMVC的配置

    SpringMVC的配置 一 拦截器 1 拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor xff0c 拦截器需要重写三个方法 xff0c 注意pr
  • Shell 命令基础

    Shell 命令基础 1 命令格式 常见的 Linux 命令的格式如下 xff1a 命令名称 span class token punctuation span 选项 span class token punctuation span 参数
  • android 深度图

    在 Android开发中自定义控件是一个范围很广的话题 xff0c 讲起自定义控件 xff0c 从广度上来划分的话 xff0c 大体上可以划分为 xff1a View ViewGroup的绘制事件分发各种动画效果滚动嵌套机制还有涉及到相关的
  • 非分区表转换为分区表(非联机)

    有些表由于过大 xff0c 需要拆分为分区表 xff0c 由于联机转化可能导致一些问题 xff0c 所以可以采用停机rename的方法 xff0c 可大致按照如下步骤操作 xff1a xff08 假设要删除表 xff0c 名称叫做Table
  • Ngnix反向代理内外网访问

    1 Web应用使用Nginx进行代理 xff0c 内网访问则直接是访问的Nginx 80代理服务器 xff0c 在外网则访问不了 xff0c 所以就有一个问题需要映射网络 2 通过路由器配置将Nginx 80代理服务器80端口映射到Web主
  • 解决windows10睡眠期间自动唤醒的问题

    背景 自己在台式机上安装好windows10后启动睡眠功能 xff0c 发现期间会出现自动唤醒的情况 第一步 在 控制面板 中找到 电源选项 xff0c 在所选的选项里 更改计划设置 xff0c 点击 更改高级电源设置 xff0c 点击 睡
  • “ImportError: No module named carla” 问题的解决方案

    参考 https carla readthedocs io en latest ros installation run the ros bridge 问题描述 安装了ROS bridge 后运行时出错 roslaunch carla ro
  • springboot整合websocket(详解、教程、代码)

    springboot整合websocket 教程及代码 大家好 xff0c 我是酷酷的韩 1 websocket定义 WebSocket协议是基于TCP的一种新的网络协议 它实现了浏览器与服务器全双工 full duplex 通信 允许服务
  • JAVA经典面试题附答案(持续更新版)

    文章目录 前言1 JAVA基础2 JVM 知识3 开源框架知识4 操作系统5 多线程6 数据库知识7 最后附一遍持续整理的博客 前言 前言 少年易老学难成 xff0c 一寸光阴不可轻 未觉池塘春草梦 xff0c 阶前梧叶已秋声 朱熹 劝学诗
  • 视觉应用工程师-环境安装教学视频-Mac系统其他操作

    立即学习 https edu csdn net course play 29993 432706 utm source 61 blogtoedu Mac系统安装miniconda搭建深度学习环境 安装 Conda是一个开源的包 环境管理器
  • Windows 环境下安装Redis 5.0.x 服务图文教程

    Windows 环境下安装Redis 5 0 x 服务图文教程 Redis官网并没有提供windows的安装包 xff0c github有第三方制作的windows安装包 下载地址 xff1a https github com tporad
  • Python 爬虫+可视化,手把手教你使用 Python 爬取 JD 网站并且可视化展示

    当你看到别人使用 Python 网络爬虫做出一些高大上的项目你是否也有那么一点点的心动 xff1f 羡慕别人用几行简单的代码就能获取到自己想要的数据 xff1f 羡慕别人用几行代码就能做出优美的可视化图案 xff1f 我将使用最新 Pyth
  • 推荐系统实践:基于数据集MovieLens构造简单推荐系统

    摘要 本文基于 MovieLens 数据集构造了用户 电影项目评价矩阵 xff0c 并基于评价矩阵计算两用户间的相似度 xff0c 取出相似度最高的 N 个用户作为候选用户序列 接着筛选出这 N 个候选用户的高分电影项目且当前用户尚未观看
  • Flask 入门教程:Jinja2模板用法

    Jinja2模板引擎简介 模板 在前面的示例中 xff0c 视图函数的主要作用是生成请求的响应 xff0c 这是最简单的请求 实际上 xff0c 视图函数有两个作用 xff1a 处理业务逻辑和返回响应内容 在大型应用中 xff0c 把业务逻
  • Github Copilot 开始收费了, 帮你列出些替代的插件

    今天打开 VSCode xff0c 弹出了Github Copilot 开始收费的通知 可以免费用到 8 月 22 日 xff0c 每月 70 元还是有些小贵 这里给大家推荐一些替代品 xff1a Kite https www kite c
  • 如何在 Ubuntu上使用 Nginx 设置密码验证

    介绍 设置 Web 服务器时 xff0c 您通常希望限制访问网站的某些部分 Web 应用程序通常提供自己的身份验证和授权方法 xff0c 但如果这些方法不充分或不可用 xff0c 则可以使用 Web 服务器本身来限制访问 在本指南中 xff