使用NGINX设置密码认证

2020年12月31日19:40:53 发表评论 66 次浏览

介绍

了解如何设置基本的HTTP身份验证系统。这将允许你用密码保护网站上的特定目录, 以便仅在使用用户名和密码登录后才能访问它们。

这种形式的密码保护是一种快速简便的方法, 可通过对网站的访问授权来提供基本的安全级别。

要求

  • 运行Linux的服务器(Ubuntu 16.04或CentOS 7)
  • NGINX已安装并正在运行。

有关安装和运行NGINX的更多信息, 咨询我们关于该主题的文章.

使用OpenSSH创建密码文件

你的服务器很可能已经安装了OpenSSH。如果没有, 则可以使用以下命令进行安装:

CentOS 7:

sudo yum install openssh openssh-server openssh-clients openssl-libs

Ubuntu 16.04:

sudo apt-get install openssh-server

使用以下命令在/ etc / nginx目录中创建一个名为.htpasswd的文件:

sudo sh -c "echo -n '[username]:' >> /etc/nginx/.htpasswd"

例如, 添加用户do命令是:

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

然后使用以下命令为此用户添加密码:

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

系统将提示你输入两次密码以进行确认。

在NGINX中设置密码验证

下一步是将密码认证指令添加到要安装Joomla的域的NGINX配置文件中。

在大多数情况下, 域的配置文件将位于/etc/nginx/conf.d在CentoS 7上, 以及/ etc / nginx / sites-available在Ubuntu 16.04上。

编辑此文件:

CentOS 7:

sudo nano /etc/nginx/conf.d/example.com.conf

Ubuntu 16.04:

sudo nano /etc/nginx/sites-available/example.com.conf

你将在此文件中添加以下行:

auth_basic "Password Required";
    auth_basic_user_file /etc/nginx/.htpasswd;

注意:这两个指令将为指定目录提供基本的密码限制。 NGINX提供了多种方法来为各种文件和目录设置密码保护, 包括按文件类型进行过滤的功能。如果要设置更复杂的密码保护系统, 请查阅NGINX官方文档更多细节。

为了保护整个站点, 请将指令放在现有的位置 /命令块。如果不存在命令块, 请添加一个:

location / {
    auth_basic "Password Required";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

如果要用密码保护子目录, 请改为指定该目录:

location /admin {
    auth_basic "Password Required";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

确保添加此位置块内服务器块。例如, 如果你的配置文件如下所示:

server {
    listen       80;
    server_name  example.com;
    root /usr/share/nginx/example.com/html/;
    index index.php index.html index.htm;
}

添加新部分后, 它将如下所示:

server {
    listen       80;
    server_name  example.com;
    root /usr/share/nginx/example.com/html/;
    index index.php index.html index.htm;

location / {
    auth_basic "Password Required";
    auth_basic_user_file /etc/nginx/.htpasswd;
  }

}

保存并退出文件, 然后重新启动NGINX:

sudo nginx -s reload

要测试配置, 请在浏览器中访问URL。如果配置正确, 你将看到一条弹出消息, 要求你输入用户名和密码。

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: