Linux 技术手札

Nginx 设定目录密码保护

在 Apache 要设定密码保护目录, 可以用 .htaccess 及 .htpasswd 实现, 但在 Nginx 不支援 .htaccess..

以下是 Nginx 设定密码保护目录的方法。

1. 建立使用者名称及密码

首先需要建立一个密码档, 里面包含了使用者名称, 以及加密了的密码, 如果系统有安装 Apache, 可以用以下语法建立密码档:

# htpasswd -c /path/to/file/.htpasswd username

然后跟着指示设定密码即可。

但如果没有 htpasswd 指令可以使用, 那便要手动建立密码档, 但也是很简单的。密码档的格式如下:

username:encrypted-password:comment

上面的 username 是使用者名称, 可以自行定义, 而 encrypted-password 则是加密的密码, 以下是用 perl 建立加密密码的指令:

上面设定指令会输出 “your-password” 的加密密码, 请按需要自行修改密码, 然后指令会输出加密的密码, 上面的例子是 “saoYYKpu2QSsA”

现在建立密码档:

# vi /home/opencli/.htpasswd

将要设定的使用者名称及上面的加密密码复制到档案, 即以下格式:

储存盘案后离开文字编辑器。

现在开启 Nginx 的设定档设定, 以下假设档案在 /etc/nginx/conf.d/default.conf:

# vi /etc/nginx/conf.d/default.conf

假设我要设定密码保护的目录是 /usr/share/nginx/html/admin, 在 server 段落加入以下几行:

上面的 “/admin/” 表示主机下的 admin 目录, 默认即 /usr/share/nginx/html/admin, 如果想整个网站也要密码保护, 改成 “location /” 即可.

储存盘案后需要重新启动 Nginx:

# systemctl restart nginx

现在再次进入网站的 /admin 目录, 便会要求输入使用者名称及密码。

Exit mobile version