场景:一个外网访问地址,不希望对全部人可见,希望只有正确输入用户名、密码的人才能访问时,可以通过修改 Nginx 配置实现。
1. 检查 htpasswd 是否可用
我们会用到一个工具 htpasswd
,主要用于对访问密码加密(注:千万不要直接存明文密码!!!),可使用以下命令检查是否已经安装:
1 2
| sq@host01:~$ which htpasswd /usr/bin/htpasswd
|
如果没有这个工具,需要先安装:
1 2 3 4 5
| $ sudo apt-get install -y apache2-utils
$ yum -y install httpd-tools
|
2. 生成密钥文件
1 2 3 4 5 6 7 8 9 10
|
$ htpasswd -c /etc/nginx/.htpasswd admin New password: Re-type new password: Adding password for user admin
$ cat /etc/nginx/.htpasswd admin:$apr1$pCPJOCsr$pyVB5i.K/CuUPHGeWm6XN1
|
3. 配置 Nginx 并重启
如下修改 Nginx 配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| server { listen 80; server_name demo.xxx.com; location / { root /data/wwwroot/demo; index index.htm index.html;
auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd;
} }
|
重启 Nginx,访问 demo.xxx.com
即可看到用户名、密码输入框。