zoukankan      html  css  js  c++  java
  • Linux进阶之给nginx设置登录用户验证

    一、nginx开启访问验证

    使用nginx搭建的站点,如果不想让所有人都能正常访问,那么可以设置访问认证,只有用户输入正确的用户名和密码才能正常访问。

    nginx下,提供了ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容。默认情况下,nginx 已经安装了该模块。所以整体的一个过程就是先用第三方工具( htpasswd,或者使用 openssl)设置用户名、密码(其中密码已经加过密),然后保存到文件中,接着在 nginx 配置文件中根据之前事先保存的文件开启访问验证。

    二、以htpasswd为例

    1、安装htpasswd工具

    [root@ren5 ~]# yum -y install nginx           #安装nginx

    [root@ren5 ~]# yum -y install httpd-tools          #安装httpd-tools

    2、设置指定用户及密码

    [root@ren5 ~]# cd /etc/nginx/

    [root@ren5 nginx]# touch .passwd                    #创建生成密码的文件

    [root@ren5 nginx]# htpasswd -c /etc/nginx/.passwd ren5             #设置用户名和密码,并把用户名、密码保存到指定文件中

    New password:

    Re-type new password:

    Adding password for user ren5

    注意:上面的 /etc/nginx/.passwd 是生成密码文件的路径,然后ren5是用户名,你可以根据需要自行设置成其它用户名。运行命令后,会要求你连续输入两次密码。输入成功后,会提示已经为ren5这个用户添加了密码。

    [root@ren5 nginx]# cat .passwd          #查看生成的密码文件的内容

    ren5:$apr1$Lna.yg7m$n6g9180iZQP7GXJ447CE0/             #用户名ren5,冒号后面是密码(已经加密)

    3、修改nginx配置文件

    [root@ren5 nginx]# vim nginx.conf            #在第一个server模块下添加

    #############################################

    location / {

            auth_basic "Please input password";

            auth_basic_user_file /etc/nginx/.passwd;

            }

    ################################################

    [root@ren5 nginx]# nginx -t          #检查配置文件是否有误

    [root@ren5 nginx]# systemctl restart nginx              #重启nginx

    [root@ren5 nginx]# firewall-cmd --add-port=80/tcp               #添加防火墙端口

    Success

    4、浏览器访问

    出现身份验证

    3htpasswd 命令

    三、htpasswd选项参数 

    htpasswd [ -c ] [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username

    htpasswd -b [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -D ] [ -v ] passwdfile username password

    htpasswd -n [ -i ] [ -m | -B | -d | -s | -p ] [ -C cost ] username

    htpasswd -nb [ -m | -B | -d | -s | -p ] [ -C cost ] username password

    1htpasswd命令选项参数说明:

        -c 创建一个加密文件

        -n 不更新加密文件,只将htpasswd命令加密后的用户名,密码显示在屏幕上

        -m 默认htpassswd命令采用MD5算法对密码进行加密

        -d htpassswd命令采用CRYPT算法对密码进行加密

        -p htpassswd命令不对密码进行进行加密,即明文密码

        -s htpassswd命令采用SHA算法对密码进行加密

        -b htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码

        -D 删除指定的用户

    2htpasswd例子

    1)用htpasswd命令添加用户 

    [root@ren5 nginx]# htpasswd -bc .passwd ren001 123

    #在当前目录下生成一个.passwd文件,用户名ren001,密码:123,默认采用MD5加密方式

    2)在原有密码文件中增加下一个用户

    [root@ren5 nginx]# htpasswd -b .passwd ren002 456

    [root@ren5 nginx]# cat .passwd

    ren001:$apr1$Ln1ZsyVn$2hn3VFqP0L5tNA1UCSU8F.

    ren002:$apr1$hCiMb9jc$Z.m7ZgOBCj0ISeIieTaVy/

    #去掉c选项,即可在第一个用户之后添加第二个用户,依此类推

    3)不更新密码文件,只显示加密后的用户名和密码

    [root@ren5 nginx]# htpasswd -nb ren002 456

    ren002:$apr1$DT53A20W$YRS7p4j.1Wum9q0kG3OQv.

    #不更新.passwd文件,只在屏幕上输出用户名和经过加密后的密码

    4)用htpasswd命令删除用户名和密码

    [root@ren5 nginx]# htpasswd -D .passwd ren002

    Deleting password for user ren002

    [root@ren5 nginx]# cat .passwd

    ren001:$apr1$Ln1ZsyVn$2hn3VFqP0L5tNA1UCSU8F.

    5)用 htpasswd 命令修改密码

    [root@ren5 nginx]# htpasswd -D .passwd ren001

    Deleting password for user ren001

    [root@ren5 nginx]# htpasswd -b .passwd ren001 123456

    Adding password for user ren001

  • 相关阅读:
    12.精益敏捷项目管理——产品协调小组笔记
    打字游戏
    提升权限
    下载者
    SMTP实现发送邮箱2(封装版)
    SMTP实现发送邮箱1
    电子邮件协议详解
    JSON运用在文件
    JSON函数表2
    JSON函数表1
  • 原文地址:https://www.cnblogs.com/renyz/p/11373394.html
Copyright © 2011-2022 走看看