CentOS 7 下 Nginx HTTP Authorization之Basic Auth设置

yum 安全 nginx centos7 运维 · ez · 于 4年前 发布 · 4115 次阅读

HTTP 协议提供了一系列认证功能,这些功能只要在 HTTP Web Server 上配置即可,比较便捷。 使用http auth时不会用cookie,http auth现在用的并不多。不过在路由器等场合还是有所应用的,因为http auth最简单,使用起来几乎是零成本。在做访问控制,不想使用SSO、数据库之类的东西的时候,http auth为一个简洁的选项。

一次实际访问过程是如下:

  1. 第一次发送http无Authorication头的请求
  2. 服务器端返回401页面
  3. 前端弹出认证对话框
  4. 用户输入帐号密码,并点确认
  5. 发出带着Authorization的request
  6. 服务器端认证通过,并返回页面

所以还是需要有密码

安装htpasswd

生成管理密钥有很多方式,太复杂,所以我们用工具htpasswd来实现

yum install -y httpd-tools

生成密码

htpasswd -c /etc/nginx/conf.d/.htpasswd 用户名

然后会提示输入两遍密码。

配置Nginx

nginx auth模块对指定页面进行登录验证,auth模块一般都自带所以直接写配置

server {
    listen       80;
    server_name  ap.bestyii.com;

    auth_basic "basic auth"; #重点
    auth_basic_user_file /etc/nginx/conf.d/.htpasswd;#重点上面配置的密码路径

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:8000;
    }
}

检查配置文件并重启即可

nginx -t

service nginx reload

本文由 ez 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 1 条回复
best#14年前 0 个赞

每个用户都要创建个密码文件吗?

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册