在某些特定的环境下,我们希望nginx下的web站点在访问时需要用户输入账户密码才能访问。以便拒绝那些不速之客。
其实,配置起来也很简单,按照下面的步骤即可实现。
一、编辑虚拟主机配置文件。
- server {
- listen 80; //监听端口为80
- server_name www.abc.com; //虚拟主机网址
- location / {
- root sites/www1; //虚拟主机网站根目录
- index index.html index.htm; //虚拟主机首页
- auth_basic "secret"; //虚拟主机认证命名
- auth_basic_user_file /usr/local/nginx/passwd.db; //虚拟主机用户名密码认证数据库
- }
- #省略其他配置
- ....
- }
二、通过htpasswd命令生成用户名及对应密码数据库文件。
- [root@localhost /]#mkdir /usr/local/nginx
- [root@localhost /]#vi /usr/local/nginx/passwd.db
- [root@localhost /]# htpasswd -c /usr/local/nginx/passwd.db admin //创建认证信息,admin 为认证用户名
- New password: ******* //输入认证密码
- Re-type new password: ******** //再次输入认证密码
- Adding password for user admin
- [root@localhost /]# chmod 400 /usr/local/nginx/passwd.db //修改网站认证数据库权限
- [root@localhost /]# chown nginx. /usr/local/nginx/passwd.db //修改网站认证数据库属主和属组
- [root@localhost /]# cat /usr/local/nginx/passwd.db //可以看到通过htpasswd生成的密码为加密格式
- admin:x/J1o94NgIV2k
三、重新启动nginx即可生效。
- service nginx reload
通过上面的三个步骤即可完成在nginx下实现访问web网站密码认证保护的功能。